【解决】MissingReferenceException: The object of type ‘GameObject‘ has been destroyed 观察者模式 监听物体被销毁

这篇具有很好参考价值的文章主要介绍了【解决】MissingReferenceException: The object of type ‘GameObject‘ has been destroyed 观察者模式 监听物体被销毁。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MissingReferenceException: The object of type ‘Text’ has been destroyed but you are still trying to access it.
Your script should either check if it is null or you should not destroy the object.
该情况发生于我的观察者模式重新加载当前场景时 监听的物体被销毁
如上所示错误,通过分析,定位到错误是在观察者模式使用事件分发器注册监听 消息。其内部方式使用 委托订阅方式进行,在重加载场景时,unity调用Destory()生命周期函数 此时监听挂载没有被清楚。或者说该监听需要的gameobject 实例重新加载时销毁掉
(观察者模式地址)
【解决】MissingReferenceException: The object of type ‘GameObject‘ has been destroyed 观察者模式 监听物体被销毁,unity,观察者模式,unity,游戏引擎
如下图所示 监听挂载后 在重新加载的过程中没有Remove掉;
【解决】MissingReferenceException: The object of type ‘GameObject‘ has been destroyed 观察者模式 监听物体被销毁,unity,观察者模式,unity,游戏引擎
需要在脚本销毁时OnDestroy()生命周期中,调用写好的RemoveEventListener函数(unity在重新加载当前场景时时,会调用该生命周期函数);
【解决】MissingReferenceException: The object of type ‘GameObject‘ has been destroyed 观察者模式 监听物体被销毁,unity,观察者模式,unity,游戏引擎
该函数如下所示文章来源地址https://www.toymoban.com/news/detail-672045.html

public static void RemoveEventListener(string name,UnityAction<object> action)
    {
        if (eventDic.ContainsKey(name))
        {
            eventDic[name] -= action;
        }
        Debug.Log("RemoveEventListener");
    }

到了这里,关于【解决】MissingReferenceException: The object of type ‘GameObject‘ has been destroyed 观察者模式 监听物体被销毁的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包