工作记录——Assertion failed on expression: ‘go.IsActive()‘

出现现象和原因

这个报错一般出现在我们在 Editor 下,停止运行的时候。

可能会伴有另一个错误提示你内存中有些东西没有清掉,并顺带导致你下次编辑器中运行时出现奇怪的错误。(尤其对于单例对象)

这是因为代码中某个脚本销毁时(常见如 OnDisable),以某种方式调用了GameObject.Find("xxxx")。

解决

最简单的方式就是不要在Ondisable里做这种 GameObject.Find("xxxx") 调用。

但有时候我们不得不这样做,这时我们可以利用生命周期函数中的 OnApplicationQuit() 方法,具体如下:

bool isQuit = false;

private void OnDisable()
{
    if (!isQuit)
    {
        GameObject.Find("XXX");
        //...
    }
}
private void OnApplicationQuit()
{
    isQuit = true;
}

在退出时 OnApplicationQuit() 是早于 OnDisable() 调用的,预先设置一个标志位,规避会报错的语句。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值