Unity中解决DontDestroyOnLoad的坑 | 您所在的位置:网站首页 › unity创建新场景怎么回到原来的场景 › Unity中解决DontDestroyOnLoad的坑 |
一:前言
我们经常要用到DontDestroyOnLoad来使一个GameObject在切换场景的时候不被销毁 例如现在有两个场景Scene1和Scene2,在Scene1的GameManager脚本的Start方法中调用了DontDestroyOnLoad(gameObject),接着切换到Scene2,会发现GameManager对象没有被销毁,但当从Scene2切换到Scene1时,会多出一个GameManager对象,每次进入到Scenen1时都会多一个GameManager对象这是因为每次进入到Scene1时,都会执行Start方法中的DontDestroyOnLoad方法,而之前的GameManager对象没有被释放,所以会又多出一个GameManager对象 创建一个初始化的场景,在初始化场景里面的某个游戏对象的全局脚本中,把所有游戏对象全部设置成DontDestroyOnLoad,也就是切换场景时不销毁,接着进入到第一个游戏场景,也就是说逻辑永远不会再返回初始化场景,也就不会存在来回切场景DontDestroyOnLoad没有删除的问题 三:解决方法二判断一下引用是否为空,如果为空再设置为DontDestroyOnLoad,如果不为空则删除此游戏物体 using UnityEngine; public class GameManager : MonoBehaviour { public static GameManager Instance { get; set; }//单例 private void Awake() { if (Instance != null) { Destroy(gameObject); } else { Instance = this; DontDestroyOnLoad(this); } } }
|
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |