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
{
}