【发布时间】:2022-11-01 18:10:57
【问题描述】:
假设我有一个 ScriptableObject 项:
public class Item : ScriptableObject
{
public new string name;
public string description;
public Sprite sprite;
}
唯一的问题是可以修改字段:
Item item = new Item();
item.description = "Overwrite";
我希望它们是只读的。我使用属性找到了这个解决方法:
public class Item : ScriptableObject
{
[SerializeField] private new string name;
[SerializeField] private string description;
[SerializeField] private Sprite sprite;
public string Name => name;
public string Description => description;
public Sprite Sprite => sprite;
}
唯一的问题是这有效地使我所有的 ScriptableObjects 的长度加倍并且看起来很麻烦。是否有另一种首选方法可以使 ScriptableObject 字段只读而不需要额外的代码并且仍然序列化字段?
【问题讨论】:
-
你拥有它的方式是统一编写它的最短方式。
标签: unity3d properties scriptable-object