软件编程
位置:首页>> 软件编程>> C#编程>> Unity 静态变量跨场景操作

Unity 静态变量跨场景操作

作者:Yan_Sl  发布时间:2023-10-16 14:32:41 

标签:Unity,静态,变量,场景

创建两个场景同时赋值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变量,也不需要实例化类,跳转后直接读取就行了

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

来源:https://blog.csdn.net/u014761712/article/details/79252961

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com