首页 > 解决方案 > Unity 脚本导入设置定义默认变量值

问题描述

我不知道该怎么说这个问题。所以我会发布我的问题的截图。

我怎么做

[SerializeField] private Sprite[] m_Sprites;

出现在检查员这里

在此处输入图像描述

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

标签: c#unity3d

解决方案


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

... aSprite[]是一个数组,不继承自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因此它应该显示为默认引用字段。

所以你需要通过right clickon AssetsAdd→创建这个资产SpriteContainer。在这里你可以引用你需要的所有精灵。然后将其拖到spriteContainer脚本的字段中。


推荐阅读