无法在检查器中分配ScriptableObject

时间:2015-06-03 09:37:36

标签: unity3d unity3d-editor

我在检查器中分配ScriptableObjects时遇到了问题。

例如,我有这个课程:

using UnityEngine;

public class Buff : ScriptableObject {
    public string buffName;
}

在一个monobehavior派生类中,我有一个这样的成员:

public Buff testBuff;

在检查员中,我看到以下内容,但我无法拖放脚本' Buff'致该会员enter image description here
它可以将Buff拖放为新脚本,但我无法将其添加到“测试缓冲区”中。

我试过而不是拖放+删除就是简单地创建一个Buff实例:

public Buff testBuff = new Buff();

这有效: enter image description here但我认为拖放也应该有效,加上上面的警告:

Buff must be instantiated using the ScriptableObject.CreateInstance method instead of new Buff.
UnityEngine.ScriptableObject:.ctor()
Buff:.ctor()
...

我使用Unity" 5.0.2f1 Personal",这是最新版本。

2 个答案:

答案 0 :(得分:0)

您需要创建一个资产文件,使用您的Scriptable Object作为其类型。这只能通过编辑器脚本完成。 wiki上有一个通用的。

基本上,您只需为每个Scriptable Object类型创建一个菜单项,使用菜单项创建这些类型的资产,然后使用您希望它们拥有的值修改资产。重要的是要记住,SCO将用作模板,如果您在编辑器中修改SCO或使用代码,这些更改将立即对引用SCO的所有GameObject和组件生效。

答案 1 :(得分:0)

使用EditorGUILayout.ObjectField在自定义检查器中创建具有特定文件扩展名的资产; DefaultAsset;打开/保存对话框 detail video how do it