求助,怎么把上一个room里的变量带到下一个room里
gamemaker吧
全部回复
仅看楼主
level 5
恶魔_羊 楼主
在上一个room里选择角色,想在下一个room里出现
我在上一个room设置变量choose=n 就是出现第n个角色,然后根据choose在下一个room里创造对应的obj,这个choose变量怎么带入到下一个room里?
2014年12月06日 14点12分 1
level 13
事实上,只要不是临时变量(Temporary Variables,由关键词var声明的)都可以挺到下一个房间。
但事实上,由于每一次进入房间时,都要把每一个物体创建一次,因此,物体的创建事件会被执行一次,其局部变量(Local Variables,某物体专属的变量)在创建或房间开始时会被重新初始化,所以我们容易认为局部变量不能挺过一个房间,而且在下一房间中,几乎不可能存在相同id的物体(仍有存在的可能,后面有解释)。
因此,建议你把角色编号存入一个全局变量(Global Variables,任何东西都能够直接访问或修改的变量),全局变量的id是非常容易访问的(global,字面值为-5)而全局变量是一个变量,所以你只需要声明一次即可,这样他就能挺过房间了。
当然,刚刚有说到,局部变量仍可能挺过下一房间,只需要把这个物体设定为【保持】(Persistant)物体即可,因为保持物体是可以跨房间的,在进入房间期间不用再次创建,而是沿用上一房间中的该物体。因此,他的局部变量是可以跨房间访问的。
而对于你的角色编号存储问题,你可以把他存在一个文件里面,文件别说跨房间了,跨程序、跨时间都可以,因此就能够长期保存,就不怕数据消失了。每次启动游戏的时候用文件读取类函数将数值读入变量中即可
2014年12月07日 01点12分 2
谢谢,用persistant解决了[吐舌]
2014年12月10日 07点12分
吧务
level 12
global变量
可以用globalvar声明。这个声明的变量一定不要与对象变量重名。
也可以用global.n直接引用。global.n与对象的n不会重名。
2014年12月07日 03点12分 3
1