欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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视窗中也会自动生成这样的游戏物体

Unity 静态变量跨场景操作

跳转到场景b中,再从这个游戏物体身上取脚本组件和值

2. 使用playerprefs进行永久存储

这种方式应该会以文件的方式存储在存储器中,


设值

playerprefs.setint("currentlevel", 10);

读值

playerprefs.getint("currentlevel")

3.使用static变量

这种方式很不错,自己设计一个class,把要存储并传递的变量做成public static变量,也不需要实例化类,跳转后直接读取就行了

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。