首页 > 解决方案 > 如何在 Unity 的检查器中配置嵌套对象

问题描述

我尝试在 Unity 的 C# 脚本中创建嵌套对象并更改其中的值。

嵌套对象类

using UnityEngine;

public class Replica : ScriptableObject
{
    public string Text;
    public int Speed = 1;
    public int PersonaID = 0;
}

具有嵌套对象的类

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

[CreateAssetMenu(fileName = "Data", menuName = "ScriptableObjects/DialogContainer", order = 1)]
public class DialogContainer : ScriptableObject {
    public Replica[] Replicas; // Here is nested object
    public Sprite[] Avatars;
}

当我创建 ScriptableObject 时,我看到: Photo of ScriptableObject interface

这里我只能放一个类的实例,但我不能配置它。

但是我想直接在检查器中更改值,而无需像在 InputManager 中那样创建和插入类“副本”的对象,我可以在轴上再创建一个 obj,打开它并像这样在检查器中更改值。 我想看的界面照片

标签: c#unity3d

解决方案


如果您想在检查器中配置您的类,则该类不能派生MonoBehaviourScriptableObject带有标签,[System.Serializable]而不是您可以在嵌套类中序列化它而不创建实例。

复制品:

[System.Serializable]
public class Replica
{
    public string Text;
    public int Speed = 1;
    public int PersonaID = 0;
}

对话容器:

using System.Collections.Generic;
using UnityEngine;

public class DialogContainer : MonoBehaviour{
    public List<Replica> Replicas;
    public Sprite[] Avatars;
}

比我看到的:Inspector screenshot


推荐阅读