Unity编辑器Inspector面板数组元素属性未显示问题排查
问题根源
你写的Sound类继承了MonoBehaviour,这就是属性不显示的直接原因。
- 所有继承
MonoBehaviour的类都是组件类型,组件必须依附在GameObject上才能存在,没法作为普通数据结构直接内嵌在其他组件的字段里序列化展示。 - 你现在看到的元素选择入口,是Unity把这个数组识别成了「组件引用数组」,只支持拖入场景里已经存在的Sound组件,自然不会展开显示类里定义的Clip、Volume这些字段。
- 你参考的旧教程里,Sound类肯定没有继承MonoBehaviour,属于你写代码时手滑多写了继承关系。
修复方法
直接删掉Sound类的MonoBehaviour继承即可,修改后的Sound类代码:
using UnityEngine; [System.Serializable] public class Sound { public AudioClip Clip; public string Name; [Range(0f, 1f)] public float Volume; [Range(.1f, 3f)] public float Pitch; }
改完等Unity自动重新编译脚本,再看AudioManager上的Sounds数组,就能直接展开每个元素编辑所有属性,和教程里的效果完全一致。
补充说明:如果你后续真的需要把Sound作为独立组件挂载到对象上,那只能单独创建GameObject挂载Sound组件,再把对应组件拖到数组里做引用,但这种做法做音频配置管理非常冗余,普通音频配置表用不继承MonoBehaviour的普通可序列化C#类是最优方案。
内容的提问来源于stack exchange,提问作者Lucas Gabriel
相关产品推荐
相关产品推荐

