2015-06-03 7 views
3

У меня возникли проблемы с назначением ScriptableObjects в инспекторе.Невозможно назначить ScriptableObject в инспекторе

Например, у меня есть этот класс:

using UnityEngine; 

public class Buff : ScriptableObject { 
    public string buffName; 
} 

В одном из monobehavior производных классов, у меня член так:

public Buff testBuff; 

В инспектора я вижу следующее, но Я не могу перетащить + сбросить скрипт «Buff» этому члену enter image description here
Он работает, чтобы перетащить + бросить Buff как новый скрипт, но я не могу добавить его в «Test 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», которая является последней версией.

ответ

0

Вам необходимо создать файл активов, который использует ваш Scriptable Object как его тип. Это можно сделать только с помощью сценария редактора. Существует общий номер на wiki.

По существу, вы просто создаете пункт меню для каждого типа объекта Scriptable Object, который вы используете, используйте элемент меню для создания активов этих типов, а затем изменяйте активы со значениями, которые вы хотите иметь. Важно помнить, что SCO должны использоваться в качестве шаблонов, если вы модифицируете SCO либо в редакторе, либо с кодом, эти изменения мгновенно вступят в силу для всех GameObjects и компонентов, которые ссылаются на SCO.

Смежные вопросы