DontDestroyOnLoad 的缺陷和解決辦法

缺陷:兩個場景中來回跳轉時 DontDestroyOnLoad的物體會重複創建  而我們要求場景中只存在一個

解決辦法:

    方法一   這個方法直接掛在到一個物體上就可以

public class DestornDemo : MonoBehaviour {

    public static DestornDemo Instance=null ;

  //--------方法一  
    private void Start()
    {
        if (Instance !=null)
        {
            Destroy(this);
            return;
        }

        Instance = this;
        DontDestroyOnLoad(this);       

    }
   
    private void OnGUI()
    {
        if (GUILayout.Button("跳轉:1"))
        {
            SceneManager.LoadScene(1);
        }
        if (GUILayout.Button("跳轉:0"))
        {
            SceneManager.LoadScene(0);
        }
    }
}   
阿斯頓發

    方法二 此腳本不需要掛載 但是需要調用一下這個腳本中的方法

public class DestornDemo : MonoBehaviour {

    public static DestornDemo Instance=null ;


    static DestornDemo()
    {
        GameObject obj = new GameObject("show");
        Instance = obj.AddComponent<DestornDemo>();
        DontDestroyOnLoad(obj);
        print("Chushihua");
    }
    public void Destroy()
    {
        print("SettingOver");
    }
    private void OnGUI()
    {
        if (GUILayout.Button("跳轉:1"))
        {
            SceneManager.LoadScene(1);
        }
        if (GUILayout.Button("跳轉:0"))
        {
            SceneManager.LoadScene(0);
        }
    }
}

在另一個腳本中調用

public class Destroy_2 : MonoBehaviour
{


    void Start()
    {
        DestornDemo.Instance.Destroy();
    }

}
    方法三: 在遊戲開始時第一個場景中 直接設置好不需要銷燬的物體 從此以後再也不跳轉到第一個場景


發佈了58 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章