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