Unity C#中能否将自定义类作为数组元素在编辑器中编辑配置?
实现方案
这个需求完全可以实现,只需对自定义类做一处补充即可:
- 给
DialogueBase类添加[System.Serializable]特性,该特性会让Unity对类实例做序列化处理,这样内部字段才能在Inspector面板中正常展示和编辑。
修改后的类代码如下:
[System.Serializable] class DialogueBase { [SerializeField] private string input; [SerializeField] private Color textColor; [SerializeField] private float delay; }
之后你就可以在任意继承自MonoBehaviour的业务脚本中,声明该类的数组或List字段,注意字段需要设为public,或者加[SerializeField]特性才能在编辑器中显示:
public class DialogueController : MonoBehaviour { // 数组形式 [SerializeField] private DialogueBase[] dialogues; // 也可以用List,编辑器增删元素更方便 // [SerializeField] private List<DialogueBase> dialogues; }
将上述脚本挂载到场景中的GameObject上后,就可以在Inspector面板自由调整数组/List的长度,直接修改每个对话实例的三个参数,完全符合你的使用要求。
内容的提问来源于stack exchange,提问作者official
相关产品推荐
相关产品推荐

