0

我知道这是可以做到的,因为神奇的插件Odin有一些史诗般的序列化工具。

我希望我可以使用 Odin 来做到这一点,但即使他们的 [Serialize] 标签也不起作用。

我想在 Scriptable Object 中序列化一个新的脚本实例。

使用 Odin,您可以序列化字典,如果您序列化包含接口(脚本)实例的字典,它允许您在字典中创建该脚本的新实例,如下所示:

在此处输入图像描述

由于可以将脚本的实例存储在字典中,我很好奇如何自行完成。

我要保存的脚本是一个只有函数和一个空构造函数的通用脚本。

你知道为什么要在 ScriptableObject 中序列化接口(脚本)的实例吗?

理想情况下,我可以以某种方式创建一个属性,然后强制它像这样进行序列化:

public class MyClass: MonoBehaviour
{
    [ForceSerialize]
    public IScript scriptToSerialize;

}

然后在检查器中,我只需单击该框并创建该脚本的一个新实例以附加到该对象。

4

1 回答 1

1

您不需要任何 [Serialize] 标签,MyClass 只需继承自 Sirenix.OdinInspector.SerializedMonoBehaviour 而不是 MonoBehaviour。为了使 Odin 的自定义序列化工作,需要使用这些“序列化”类(也存在于 ScriptableObjects 等),这将使您的字段出现在检查器中。

这个脚本对我有用:

using Sirenix.OdinInspector;

public class MyScript : SerializedMonoBehaviour
{
    public IScript scriptToSerialize;
}

public interface IScript { }
于 2019-12-29T15:10:14.147 回答