Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Unity'中配置嵌套对象;检察官_C#_Unity3d - Fatal编程技术网

C# 如何在Unity'中配置嵌套对象;检察官

C# 如何在Unity'中配置嵌套对象;检察官,c#,unity3d,C#,Unity3d,我试图在Unity中用C#script创建嵌套对象,并更改其中的值 嵌套对象类 using UnityEngine; public class Replica : ScriptableObject { public string Text; public int Speed = 1; public int PersonaID = 0; } using System.Collections.Generic; using UnityEngine; using UnityE

我试图在Unity中用C#script创建嵌套对象,并更改其中的值

嵌套对象类

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;
}
使用嵌套对象初始化

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时,我看到:

在这里,我只能将该类的一个实例放在那里,但无法对其进行配置

但我想在inspector中直接更改值,而无需像在InputManager中那样创建和插入类“Replica”的对象,我可以在axis中再创建一个obj,然后打开它并在inspector中更改值。

除非您为
对话框容器
,否则您不能做您想做的事情。如果父对象
ScriptableObject
包含
ScriptableObject
的子列表,则在项目视图中选择父对象时,无法编辑每个子对象的字段


您必须通过在项目视图中选择副本实例来编辑每个子副本。然后,Inspector将允许您编辑该
副本

如果您想在Inspector中配置您的类,该类必须不是从
MonoBehavior
ScriptableObject
派生的,并且带有标记
[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;
}
使用System.Collections.Generic;
使用UnityEngine;
公共类DialogContainer:MonoBehavior{
公开列表副本;
公共精灵[]化身;
}

然后我看到:

请使用正确的标签。。。是或更好是早期Unity版本中使用的类似JavaScript风格的自定义语言,现在已经被长期弃用。。。您的代码显然是
c#