Unity 2018.4.36f1中声明的UnityEvent未在Inspector面板显示如何排查
泛型UnityEvent不显示在Inspector排查清单(适配Unity 2018.4.36f1版本)
你声明的字段代码为:
public UnityEvent <string, string> OnChatMessage;
可按以下优先级排查问题:
- 泛型UnityEvent原生不支持直接序列化:Unity 2018版本默认不会对
UnityEvent<T>这类泛型事件做序列化处理,直接声明public泛型UnityEvent字段不会在Inspector面板渲染。你需要额外定义一个继承自对应泛型UnityEvent的非泛型子类,并且给子类添加[Serializable]特性,修改后的参考代码如下:
using UnityEngine; using UnityEngine.Events; using System; // 先定义可序列化的自定义事件类 [Serializable] public class ChatMessageEvent : UnityEvent<string, string> { } // 再在你自己的MonoBehaviour子类里声明字段 public class YourScriptClassName : MonoBehaviour { public ChatMessageEvent OnChatMessage; }
- 检查字段特性修饰:确认
OnChatMessage字段没有被添加[HideInInspector]、[NonSerialized]这类会隐藏字段或者阻止序列化的特性。 - 检查编译状态:查看Unity控制台是否存在任意编译报错,只要有未修复的编译错误,Unity就不会更新脚本的序列化信息,新添加的字段都不会显示在Inspector。修复所有报错后清空控制台,重新选中挂载脚本的GameObject即可。
- 检查脚本继承关系:你声明
OnChatMessage的类必须继承自MonoBehaviour,且该脚本已经正确挂载到场景或预制体的GameObject上,未挂载的脚本不会在Inspector显示字段。 - 缓存刷新问题:Unity 2018的老旧版本偶发Inspector缓存不刷新的问题,确认代码无问题后可以尝试重启Unity,或者重新挂载一次脚本触发序列化刷新。
内容的提问来源于stack exchange,提问作者King_Minor
相关产品推荐
相关产品推荐

