无法在检查器中分配 ScriptableObject

Ale*_*lex 5 unity-game-engine unity3d-editor

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

例如,我有这个类:

using UnityEngine;

public class Buff : ScriptableObject {
    public string buffName;
}
Run Code Online (Sandbox Code Playgroud)

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

public Buff testBuff;
Run Code Online (Sandbox Code Playgroud)

在检查器中,我看到以下内容,但我无法将脚本“Buff”拖放到该成员 在此处输入图片说明
它可以将 Buff 作为新脚本拖放,但我无法将其添加到“测试 Buff”。

我尝试的不是拖放而是简单地创建一个 Buff 实例,如下所示:

public Buff testBuff = new Buff();
Run Code Online (Sandbox Code Playgroud)

这有效: 在此处输入图片说明 但是我相信拖放也应该有效,而且上面给出了警告:

Buff must be instantiated using the ScriptableObject.CreateInstance method instead of new Buff.
UnityEngine.ScriptableObject:.ctor()
Buff:.ctor()
...
Run Code Online (Sandbox Code Playgroud)

我使用的是最新版本的 Unity“5.0.2f1 Personal”。

Tim*_*mar 1

您需要创建一个使用可编写脚本的对象作为其类型的资源文件。这只能通过编辑器脚本来完成。wiki上有一个通用的。

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