admin管理员组文章数量:1130349
退出游戏时报错: Some objects were not cleaned up when closing the scene. (Did you spawn new GameObjects from OnDestroy?)
原因
正常情况下,在OnDisable或者OnDestroy生命周期中实例化GameObject是可以的。但是退出游戏时也会调用OnDisable或者OnDestroy,就造成了退出游戏时实例化GameObject。
解决
思路很简单,就是在OnDisable或者OnDestroy生命周期中判断目前是否是正在退出游戏
按照Unity官方提供的生命周期执行顺序
会发现最后一阶段生命周期函数执行顺序为OnApplicationQuit -> OnDisable -> OnDestroy
所以第一种解决方法如下
using UnityEngine;
public class Example : MonoBehaviour
{
private bool _isQuitting = false;
private void OnApplicationQuit()
{
_isQuitting = true;
}
private void OnDisable()
{
if(_is退出游戏时报错: Some objects were not cleaned up when closing the scene. (Did you spawn new GameObjects from OnDestroy?)
原因
正常情况下,在OnDisable或者OnDestroy生命周期中实例化GameObject是可以的。但是退出游戏时也会调用OnDisable或者OnDestroy,就造成了退出游戏时实例化GameObject。
解决
思路很简单,就是在OnDisable或者OnDestroy生命周期中判断目前是否是正在退出游戏
按照Unity官方提供的生命周期执行顺序
会发现最后一阶段生命周期函数执行顺序为OnApplicationQuit -> OnDisable -> OnDestroy
所以第一种解决方法如下
using UnityEngine;
public class Example : MonoBehaviour
{
private bool _isQuitting = false;
private void OnApplicationQuit()
{
_isQuitting = true;
}
private void OnDisable()
{
if(_is版权声明:本文标题:Unity踩坑一 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1754578185a2703804.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论