Unity 可编写脚本的对象仅序列化 unity 对象
Unity scriptable object only serializing the unity objects
我正在尝试制作拼写系统。我的系统基础 class 如下所示:
public abstract class MagicBook : ScriptableObject {
public Sprite bookSprite;
public float manaCost;
public float coolDown;
public bool rapidFire;
[HideInInspector] public bool coolDownElapsed;
public virtual void OnActivate() {
}
public virtual void OnActivate(Vector3 position, Quaternion rotation) {
}
}
然后我从 MagicBook 扩展了另一个 class,我在其中覆盖了 OnActivate 函数。我现在的问题是,在检查器中只有变量 bookSprite 显示,所有其他值都不存在。我尝试在变量前面添加一个 [SerializeField] 并在扩展 class 中定义它们。但他们仍然不显示。有谁知道为什么他们没有显示或我该如何解决这个问题?
感谢您的帮助和时间。
您是否为 ScriptableObject
创建了资产?
将属性添加到扩展 class:
[CreateAssetMenu(fileName = "Data", menuName = "ScriptableObjects/NewBook", order = 1)]
然后使用
创建资产
另一个想法:
可能你有这个对象的自定义抽屉,但是......
将您的检查器转为调试模式并检查属性是否在那里可见。
无法使用 Unity 2020.1.0f1 重现此问题。
public class NewBook : MagicBook
{
}
我正在尝试制作拼写系统。我的系统基础 class 如下所示:
public abstract class MagicBook : ScriptableObject {
public Sprite bookSprite;
public float manaCost;
public float coolDown;
public bool rapidFire;
[HideInInspector] public bool coolDownElapsed;
public virtual void OnActivate() {
}
public virtual void OnActivate(Vector3 position, Quaternion rotation) {
}
}
然后我从 MagicBook 扩展了另一个 class,我在其中覆盖了 OnActivate 函数。我现在的问题是,在检查器中只有变量 bookSprite 显示,所有其他值都不存在。我尝试在变量前面添加一个 [SerializeField] 并在扩展 class 中定义它们。但他们仍然不显示。有谁知道为什么他们没有显示或我该如何解决这个问题?
感谢您的帮助和时间。
您是否为 ScriptableObject
创建了资产?
将属性添加到扩展 class:
[CreateAssetMenu(fileName = "Data", menuName = "ScriptableObjects/NewBook", order = 1)]
然后使用
另一个想法:
可能你有这个对象的自定义抽屉,但是......
将您的检查器转为调试模式并检查属性是否在那里可见。
无法使用 Unity 2020.1.0f1 重现此问题。
public class NewBook : MagicBook
{
}