【问题标题】:Unity scriptable object only serializing the unity objectsUnity 可编写脚本的对象仅序列化统一对象
【发布时间】:2020-10-27 00:35:31
【问题描述】:

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

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] 并在扩展类中将它们定义为新的。但他们仍然不显示。有谁知道他们为什么不显示或我该如何解决这个问题?

感谢您的帮助和时间。

【问题讨论】:

  • 请显示其他类的代码。

标签: unity3d extending inspector scriptable-object


【解决方案1】:

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

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

然后用创建资产

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

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

public class NewBook : MagicBook
{
}

【讨论】:

  • 第一个;我很肯定:他/她没有实例化任何资产。当您像 Monobehaviour 一样在 Inspector 中查看 ScriptableObject 类时,只有 sprite 引用会被序列化。
  • 这是第一个:他/她没有实例化任何资产。当您像 Monobehaviour 一样在 Inspector 中查看 ScriptableObject 类时,只有 sprite 引用会被序列化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-13
  • 2010-12-14
  • 1970-01-01
相关资源
最近更新 更多