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視窗中也會自動生成這樣的遊戲物體
跳轉到場景B中,再從這個遊戲物體身上取腳本組件和值
2. 使用PlayerPrefs進行永久存儲
這種方式應該會以文件的方式存儲在存儲器中,
設值
PlayerPrefs.SetInt("CurrentLevel", 10);
讀值
PlayerPrefs.GetInt("CurrentLevel")
3.使用static變量
這種方式很不錯,自己設計一個class,把要存儲並傳遞的變量做成public static變量,也不需要實例化類,跳轉後直接讀取就行瞭
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。
推薦閱讀:
- None Found