当前位置:   article > 正文

Unity中DontDestroyOnLoad在切换场景时的坑点_unity dontdestoryonload后又回到这个场景

unity dontdestoryonload后又回到这个场景

在unity中我们经常要用到DontDestroyOnLoad来使一个gameobject在切换场景的时候不被销毁而保留下来,但是有时会遇到这样的情况,在Loading场景建立一个空物体,我给它起名叫test,上面挂一个脚本,如图

脚本里的代码是这样的

  1. void Start ()
  2. DontDestroyOnLoad(this);

这段代码只有一个作用,那就是使test这个物体在切换场景的时候不被销毁而保留下来

 

一开始我从Loading场景切换到Main场景,结果是这样的

ok,现在看起来很正常,test被保留了下来

现在我在Main场景加一个按钮,这个按钮的作用是切换回Loading场景,然后我按下那个按钮,现在场景被切换回了Loading场景,如图

现在,你发现了什么,test物体变成了两个!

这绝对不是我们想要的,那么如何解决这个问题呢?

可以在想要切换场景保留的物体上加一个单例类,当然啦,这个类最好是有实际的作用,这个单例类实现如下

  1. private static RequestManager _instance;
  2. public static RequestManager Instance { getreturn _instance; } }
  3. private void Awake()
  4. if (_instance != null)
  5. Destroy(this.gameObject); return;
  6. else
  7. _instance = this;

这里的RequestManager就是你要加的单例类的类名,你可以更换成你的单例类的类名,然后把他挂载到test物体上,然后我们重新测试一下,由Loading场景切换到Main场景,再点击按钮切换回Loading场景,现在的结果,如图

这次只有一个test物体,这样就不会出现由Main场景切换回Loading场景时,产生两个物体test了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/332812
推荐阅读
相关标签
  

闽ICP备14008679号