unity电音 DontDestroyOnLoad问题

这是你逻辑的问题...多了一个,说明伱是在Start或者Awake函数里面实例化的,又用了DontDestroyOnLoad,不销毁,每次加载新场景,那不都会加一个吗...解决方法很多,比如你在实例化前先判断是否已经实例化了,已經实例化则不再实例化新的,用个变量来标志,或者查找场景是否存在实例化物体GameObject.Find("name"),或者是你想的方法,实例化后,用FindObjectsOfType或者FindGameObjectsWithTag方法查找同类型或者同标簽的物体列表,就找到场景有几个了,再删除,这法子可不大好...

另外,这种只实例化一次的代码,最好不要放在DontDestroyOnLoad这个物体上了...

}

跳转场景时不销毁游戏对象的方法DontDestroyOnLoad()出现的问题:A场景中的cube添加不销毁代码,跳转到B场景然后跳回A场景时,发现有两个cube了不用想再跳几次会越来越多,怎么解决
解決方案:在cube上添加一个新脚本:

}

在场景跳转时有些对象需要保留,这个就是说可以保留对象的那怎么用,下面介绍一下用法

建一个场景建一个空物体,给其添加脚本

这里为了简单的测试就设置叻一个public字段,用拖的方式给其初始化a拖一个cube,b这里就拖自己;这里可以发现这个方法是可以重复使用的,而且是可以在Awake或者Start里的下面设置一个新的场景就完成跳转了,

那么如果这个对象有子级子级能不能保留呢,给cube下在设置一个cube,可以发现子级是可以保留的;

那意思是說我们把UGUI的画布拖给a,里面的UI就保留到下一个场景里了;设置一个image,用过UGUI的知道,会自动生成一个Canvas,和一个EventSystem,把Cavas拖给a,运行unity电音,这个时候会发现下個场景中是保留了image,但是没有EventSystem。所以说还是要手动保存一下这里也是UGUI没有NGUI的方便之处


那么如果把这个挂有脚本的gameobject,拖给cube作为子物体,在给其建一个同级的一个cube,命名cube1(用于区分)我们把cube1拖给a,运行时会发现,下个场景不会保存

所以说有父级的物体,父级不保留子级保留是没有用嘚。

}

我要回帖

更多关于 unity电音 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信