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();
    }

}
    方法三: 在游戏开始时第一个场景中 直接设置好不需要销毁的物体 从此以后再也不跳转到第一个场景
 


  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值