1

我正在尝试制作一个使用 GML 从房间池中选择一个房间的游戏,但出现以下错误:

为对象 obj_control 创建事件的操作编号 3 中出现致命错误:

room_goto 参数 1 不正确的类型 (5) 在 gml_Object_obj_control_CreateEvent_3(第 20 行)处期望数字 (YYGI32) - room_goto(returnRoom)

pool = ds_list_create()

ds_list_insert(pool, 0, rm_roomOne)
ds_list_insert(pool, 1, rm_roomTwo)
ds_list_insert(pool, 2, rm_roomThree)
ds_list_insert(pool, 3, rm_roomFour)

var returnIndex;
var returnRoom;

returnIndex = irandom(ds_list_size(pool))
returnRoom = ds_list_find_value(pool, returnIndex)

if (ds_list_size(pool) == 0){
room_goto(rm_menu_screen)
}else{
room_goto(returnRoom)
}

我没有收到错误消息说它需要一个数字。

4

1 回答 1

0

这确实很奇怪......我认为这应该有效..但我没有GM可以测试:(

现在你也可以使用“选择”来解决这个问题。这保存了一个列表(并节省了内存,因为您没有通过删除它来清理列表 - 因此它驻留在内存中)

room_goto(choose(rm_roomOne, rm_roomTwo, rm_roomThree, rm_roomFour));

choose基本上完全符合您的要求。但是,如果您要重新使用该组项目,则可能不是最好的方法。

于 2016-06-02T23:42:49.953 回答