Unity脚本导入设置定义默认变量值

时间:2020-04-14 23:31:24

标签: c# unity3d

我不确定该问题该如何表达。所以我将发布问题的屏幕截图。

我该怎么做

[SerializeField] private Sprite[] m_Sprites;

显示在检查器中

enter image description here

我也尝试过public Sprite[] Sprites;private Sprite[] m_Sprites,但都没有效果,我看到那里出现了变量,但是现在我似乎无法弄清楚是否需要它。经过进一步尝试后,我发现出现了public Sprite Sprite;,但是我要求它是Sprite的数组。我还尝试过创建一个holder类并在其中定义数组,但它仍然没有出现。

2 个答案:

答案 0 :(得分:1)

唯一允许默认引用的字段类型是从 UnityEngine.Object

派生的类型的字段

... Sprite[]是一个数组,并不继承于UnityEngine.Object


如前所述,您可以使用ScriptableObject包装类,例如

// this attribute adds an entry to the Asset context menu Add->SpriteCotnainer
[CreateAssetMenu]
public class SpriteContainer : ScriptableObject
{
    public Sprite[] sprites;
}

然后在课堂上使用

[SerializeField] private SpriteContainer spriteContainer;

现在类型为ScriptableObject,它继承自UnityEngine.Object,因此它应该显示为默认参考字段。

因此,您需要通过在AssetsAddSpriteContainer上单击右键单击来创建此资产。在这里,您可以引用所需的所有精灵。然后将其拖到脚本的spriteContainer字段中。

答案 1 :(得分:0)

您有两个选择,要么创建一个游戏对象/预制件,向其添加脚本,然后它就会出现。

或者,如果它只是您需要访问的数据对象,则可以使其成为ScriptableObject并创建它的实例。

无论哪种方式,您都必须创建一个实例;您不能将变量分配给脚本,只能分配附加了脚本的对象。