Advertisement

修复在Unity开发中使用事件系统时因报空而出现的问题(无缘无故报空!消失的成员变量!)

阅读量:

【该内容可能为开发中等规模项目时,针对特定类型错误提供一种可行的解决思路。典型场景为:在项目运行过程中,某一脚本中的非静态成员变量在前一时刻仍处于正常状态,但随后却突然变为null,且无法在代码中找到任何导致该变量被销毁或修改的语句,进而引发程序无法继续执行后续功能的问题。

遇到的异常信息:MissingReferenceException: 类型为'GameObject'的对象已被销毁,但仍在尝试访问它。

该问题的具体情境如下:用户编写了一个用于角色换装及移动转向的脚本,其中将移动转向的实现方式通过事件注册机制进行处理(采用字典与委托进行存储)。在角色选择界面中调用了换装功能,而在游戏场景中则同时使用了换装与移动转向的功能。然而当用户运行项目,并从角色选择界面切换至游戏场景时,在游戏场景中经过调试发现,原本上一秒仍具有有效值的成员变量,在下一秒却突然变为null。

为了避免描述过于抽象,现将用户相关的代码展示如下:

以下是事件注册的代码:

复制代码
  private Dictionary<Type,IEventRegistration> eventRegist

全部评论 (0)

还没有任何评论哟~