【问题标题】:GML room_goto() Error, Expecting NumberGML room_goto() 错误,期望数字
【发布时间】:2016-06-02 21:24:10
【问题描述】:

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

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

room_goto 参数 1 错误类型 (5) 需要一个数字 (YYGI32) 在 gml_Object_obj_control_CreateEvent_3(第 20 行)- 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)
}

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

【问题讨论】:

    标签: game-maker-language game-maker-studio-1.4


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的回复。但是,显然选择在您重新启动游戏时返回相同的值?
    • 好的,由于某种原因,它现在可以工作了,尽管我遇到了其他问题。我将在一个新问题中发布。再次感谢您的帮助! choose() 本身就像一个魅力!
    • 是的,choose() 使用随机函数,就像 irandom() 每次重新启动游戏时都会返回相同的值。这与“随机种子”有关。查看文档中的随机函数,他们完美地解释了它,并说明了如何使用特定函数随机化种子以每次都获得随机事件。
    • @SneakyBomber 您可以将此问题标记为已回答(如果已回答)? :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    相关资源
    最近更新 更多