Unity中如何在不同场景间操作静态变量?

更新于
2026-07-26 11:44:43
13阅读来源:SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计488个文字,预计阅读时间需要2分钟。

Unity中如何在不同场景间操作静态变量?

创建两个场景,同时赋予StaticVarious脚本和H、J按键切换场景功能。按下H+、J键进行不间断场景切换,unity控制台会显示数字不断累加,随后将静态值移除。这种结果都是10。 csharpusing UnityEngine;using System.Collections.Generic;

创建两个场景同时赋值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场景间数据传递方法

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变量,也不需要实例化类,跳转后直接读取就行了

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

本文共计488个文字,预计阅读时间需要2分钟。

Unity中如何在不同场景间操作静态变量?

创建两个场景,同时赋予StaticVarious脚本和H、J按键切换场景功能。按下H+、J键进行不间断场景切换,unity控制台会显示数字不断累加,随后将静态值移除。这种结果都是10。 csharpusing UnityEngine;using System.Collections.Generic;

创建两个场景同时赋值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场景间数据传递方法

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变量,也不需要实例化类,跳转后直接读取就行了

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