Unity 静态变量跨场景操作
程序员文章站
2022-03-13 08:08:05
创建两个场景同时赋值staticvarious 脚本 然后按键好,h ,j 进行不断切换场景,会发现unity 控制台输出数字不断增加,然后把静态去掉,这样结果都是10。using unityengi...
创建两个场景同时赋值staticvarious 脚本 然后按键好,h ,j 进行不断切换场景,会发现unity 控制台输出数字不断增加,然后把静态去掉,这样结果都是10。
using unityengine; using system.collections; using unityengine.scenemanagement; public class staticvarious : monobehaviour { static int value = 10; void start () { debug.log(value++); } public void update() { if (input.getkeydown(keycode.h)) { scenemanager.loadscene("test4"); } if (input.getkeydown(keycode.j)) { scenemanager.loadscene("test3"); } } }
补充:unity场景间数据传递方法
在游戏开发中,会常用到场景间传递数据的方法(比如关卡选择,过关后自动回到关卡选择界面,以动画方式解锁下一关),
目前研究了三种:
1. 使用dontdestroyonload方法:
(1)在场景a中做个gameobject,身上挂个脚本,在start方法中写明
dontdestroyonload(gameobject);
这个表示在场景跳转后,不需要destory这个物体,在下个场景中这个物体依然保留,运行后,在hierarchy视窗中也会自动生成这样的游戏物体
跳转到场景b中,再从这个游戏物体身上取脚本组件和值
2. 使用playerprefs进行永久存储
这种方式应该会以文件的方式存储在存储器中,
设值
playerprefs.setint("currentlevel", 10);
读值
playerprefs.getint("currentlevel")
3.使用static变量
这种方式很不错,自己设计一个class,把要存储并传递的变量做成public static变量,也不需要实例化类,跳转后直接读取就行了
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。