GML自定义roomchange函数传参报错:提示仅接受0个参数求助
问题根源分析:自定义
roomchange函数报错“不接受0个以上参数” 核心原因:内置函数命名冲突
GameMaker原生提供了一个无参数的roomchange()内置函数,作用是触发房间切换的系统事件。你自定义了同名的带参函数roomchange(dir),但GameMaker会优先调用内置的无参版本——当你传入参数调用roomchange(next_room)时,实际执行的是内置函数,而它不支持传参,因此触发报错。
辅助逻辑问题(额外补充)
就算解决了命名冲突,你的函数逻辑还有个关键问题:room_goto(dir)执行后,当前实例的x/y赋值不会生效。因为房间切换完成后,当前房间的实例会被销毁,新房间的实例会初始化,你需要先把位置信息存在全局变量里,或者设置实例为持久化,再在新房间的实例创建时读取位置赋值。不过这是次要问题,当前报错的核心还是命名冲突。
验证方法
把自定义函数重命名为非内置函数名,比如room_change_with_pos(dir),再调用这个新函数,报错会消失,这能直接验证命名冲突的问题。
内容的提问来源于stack exchange,提问作者M0ros
相关产品推荐
相关产品推荐

