我在检查器中分配ScriptableObjects时遇到了问题。
例如,我有这个课程:
using UnityEngine;
public class Buff : ScriptableObject {
public string buffName;
}
在一个monobehavior派生类中,我有一个这样的成员:
public Buff testBuff;
在检查员中,我看到以下内容,但我无法拖放脚本' Buff'致该会员
它可以将Buff拖放为新脚本,但我无法将其添加到“测试缓冲区”中。
我试过而不是拖放+删除就是简单地创建一个Buff实例:
public Buff testBuff = new Buff();
这有效: 但我认为拖放也应该有效,加上上面的警告:
Buff must be instantiated using the ScriptableObject.CreateInstance method instead of new Buff.
UnityEngine.ScriptableObject:.ctor()
Buff:.ctor()
...
我使用Unity" 5.0.2f1 Personal",这是最新版本。
答案 0 :(得分:0)
您需要创建一个资产文件,使用您的Scriptable Object作为其类型。这只能通过编辑器脚本完成。 wiki上有一个通用的。
基本上,您只需为每个Scriptable Object类型创建一个菜单项,使用菜单项创建这些类型的资产,然后使用您希望它们拥有的值修改资产。重要的是要记住,SCO将用作模板,如果您在编辑器中修改SCO或使用代码,这些更改将立即对引用SCO的所有GameObject和组件生效。
答案 1 :(得分:0)
使用EditorGUILayout.ObjectField在自定义检查器中创建具有特定文件扩展名的资产; DefaultAsset;打开/保存对话框 detail video how do it