首页 > 解决方案 > Unity 可编写脚本的对象仅序列化统一对象

问题描述

我正在尝试制作一个拼写系统。我的系统基类如下所示:

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 扩展的类,我在其中覆盖了 OnActivate 函数。我现在的问题是在检查器中只有变量 bookSprite 显示,所有其他值都不存在。我尝试在变量前面添加一个 [SerializeField] 并在扩展类中将它们定义为新的。但他们仍然没有表现出来。有谁知道他们为什么不显示或我该如何解决这个问题?

感谢您的帮助和时间。

标签: unity3dextendinginspectorscriptable-object

解决方案


您是否创建了资产ScriptableObject
为扩展类添加属性:

[CreateAssetMenu(fileName = "Data", menuName = "ScriptableObjects/NewBook", order = 1)]

然后创建资产创建资产

另一个想法:可能你有这个对象的自定义抽屉,但是......将你的检查器变成调试模式并检查属性是否在那里可见。 调试模式

无法使用 Unity 2020.1.0f1 重现此问题。

public class NewBook : MagicBook
{
}

证明


推荐阅读