c# - Unity 脚本导入设置定义默认变量值
问题描述
我不知道该怎么说这个问题。所以我会发布我的问题的截图。
我怎么做
[SerializeField] private Sprite[] m_Sprites;
出现在检查员这里
我已经尝试过public Sprite[] Sprites;
,private Sprite[] m_Sprites
也没有任何效果,我已经看到变量出现在那里,但我现在似乎无法弄清楚我需要它。在进一步尝试之后,我发现 apublic Sprite Sprite;
出现了,但是我要求它是一个 Sprites 数组。我还尝试创建一个持有者类并在其中定义数组,但它仍然没有出现。
解决方案
唯一允许默认引用的字段类型是派生自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 Assets
→ Add
→创建这个资产SpriteContainer
。在这里你可以引用你需要的所有精灵。然后将其拖到spriteContainer
脚本的字段中。
推荐阅读
- google-bigquery - 为什么 BigQuery 会扫描整个表,尽管它是按小时分区的?
- xcode - AddressSanitizer 在 MacOS Mojave 上使用 Chromium Embedded Framework 引发崩溃
- database - 从 json 中提取唯一值的 SQLite 查询
- python-3.x - 如何在 python 3 中使用列表理解同时接受来自用户的不同数据类型
- ruby - 我可以在 Ruby 方法中访问隐式 Proc 中定义的方法吗?
- android - Android-我尝试使用意图将数据从一个活动发送到另一个活动
- python - 访问 localhost:8000/sitemaps.xml 时出现 XML 错误 | 姜戈
- javascript - COdility 标志解决方案
- python - 比较两个 csv 文件并创建第三个列匹配的文件
- java - 一个接口怎么不能初始化一个对象?