Game Maker未识别新变量:GML跨对象变量引用报错求助
GML变量未声明问题排查
可能的原因及解决方法:
- Obj_PlayerManager无实例存在:GML中通过
对象名.变量的方式访问时,实际是调取该对象的第一个已创建实例的变量。如果碰撞事件触发前,Obj_PlayerManager还没被实例化(比如没放进房间、没通过代码创建),就会提示变量未声明。解决:确保游戏运行时Obj_PlayerManager的实例已存在。 - 拼写或大小写错误:GML对大小写敏感,检查
Dmg的拼写、大小写是否完全一致(比如别写成dmg或DMG),同时确认Obj_PlayerManager的对象名和实际名称无差异。 - 变量作用域问题:Create事件里声明的
Dmg是实例变量,仅属于单个实例。如果需要全局共享的伤害值,可改为全局变量:在Obj_PlayerManager的Create事件写global.Dmg = 1,碰撞事件里用Hp -= global.Dmg,避免依赖实例存在性。 - Create事件未执行:检查Obj_PlayerManager是否被设置为不可见或有其他逻辑阻止Create事件触发,导致
Dmg变量从未被初始化。
内容的提问来源于stack exchange,提问作者Nicole Shrader
相关产品推荐
相关产品推荐

