Поле единства, содержащее ScriptableObject, не сериализация ⇐ C#

Место общения программистов C#
Anonymous
Поле единства, содержащее ScriptableObject, не сериализация

Сообщение Anonymous »

У меня проблема с получением поле для правильного сериализации. Пользовательский редактор создает экземпляр этого объекта, и он не сохраняется в качестве файла активов. Насколько я понимаю, в настоящее время вы можете сделать это - Unity должно сохранение этих данных в сцене вместо проекта автоматически. Это я настроил, чтобы удерживать экземпляр стержня, и строка, просто чтобы дважды проверить сериализацию вообще. Я использую поля с раскрыванием свойств, поэтому я сделал это здесь так же хорошо, как я знаю, что задействовало отражение. < /P>

Код: Выделить всё

public class Foo : MonoBehaviour
{
[SerializeField]
private Bar bar;

[SerializeField]
private string check;

public Bar Bar { get { return this.bar; } set { this.bar = value; } }
}
Далее, класс ScriptableObject на основе . Это класс, который я хочу, чтобы экземпляр и ссылка, но не сохранять как файл активов. < /P>

Код: Выделить всё

[Serializable]
public class Bar : ScriptableObject
{
[SerializeField]
private string data;
}
< /code>

Наконец, CustomEditor < /code>, который позволяет мне создавать и связывать экземпляр BAR < /code>: < /p>

[CustomEditor(typeof(Foo))]
public class StreamableResourceTestEditor : Editor
{
public override void OnInspectorGUI()
{
base.OnInspectorGUI();

if (GUILayout.Button("Link unsaved Bar asset"))
{
Bar bar = ScriptableObject.CreateInstance();
bar.name = "Unsaved asset";

Foo foo = (Foo)this.target;
foo.Bar = bar;

EditorUtility.SetDirty(foo);
}
}
}
< /code>



перед запуском, введенные данные и нажали кнопку: < /p>

 < /p>

 < /p>

после работы: < /p>



Подробнее здесь: [url]https://stackoverflow.com/questions/35970662/unity-field-containing-scriptableobject-not-serializing[/url]

Вернуться в «C#»