Unity3DDontDestroyOnLoad详解-创新互联

关于DontDestroyOnLoad的坑呢 , 在度娘上一搜一大片,但是总感觉不那么直观 , 大多把DontDestroyOnLoad讲得太过概念化 , 不容易理解 。今天测试了一把 ,可以通过程序 ,将DontDestroyOnLoad理解得很详细。Unity3D DontDestroyOnLoad详解

创新互联公司专注于企业网络营销推广、网站重做改版、汤阴网站定制设计、自适应品牌网站建设、H5响应式网站商城开发、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为汤阴等各大城市提供网站开发制作服务。

废话不多说 , 开始介绍测试环境:

Unity3D DontDestroyOnLoad详解

在①号场景中:

Unity3D DontDestroyOnLoad详解

Unity3D DontDestroyOnLoad详解

代码:

using UnityEngine; using System.Collections; public class DontSaveTest : MonoBehaviour {     public GameObject go; // Use this for initialization void Start () {         DontDestroyOnLoad(go); } // Update is called once per frame void Update () { }     public void OnNextSceneButtonClick()     {         Application.LoadLevel("02_Second");     } }

注意 : go 绑定 Go(GameObject圆柱体)

在②号场景中:

Unity3D DontDestroyOnLoad详解

Unity3D DontDestroyOnLoad详解

代码:略。

运行游戏 , 当我们进入②号场景,②号场景会多一个Go(①号场景的圆柱体),如下图:

Unity3D DontDestroyOnLoad详解

当然,有的时候,这是我们想要的。别急 ,点Back回到①号场景后 , Go又多了一个(为了更清楚,我把其中一个Go的位置移动了一下)

Unity3D DontDestroyOnLoad详解

好了,只要每次从②号场景进入到①号场景,那么Go都会复制一个。my god。

处理方案有很多 ,在这本人给出自己的处理方案:(修该①号场景代码)

using UnityEngine; using System.Collections; public class DontSaveTest : MonoBehaviour {     public GameObject go;     private static bool isNoDestroyHandler = true;//是否没有DontDestroyOnLoad处理 // Use this for initialization void Start () {         if (isNoDestroyHandler)         {             isNoDestroyHandler = false;             DontDestroyOnLoad(go);         } } // Update is called once per frame void Update () { }     public void OnNextSceneButtonClick()     {         Application.LoadLevel("02_Second");     } }

问题的延伸:如何在②号场景中得到Go

方案①:

为Go加一个Tag , 我这里用的是Player

获取 :

GameObject.FindGameObjectWithTag("Player");

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站标题:Unity3DDontDestroyOnLoad详解-创新互联
当前地址:http://pwwzsj.com/article/docess.html