Код для примера:
файл EditorScript.cs:
Синтаксис:
Используется csharp
using System.Collections.Generic;
using UnityEditor;
class EditorScript
{
[MenuItem("Test/test")]
static void Execute()
{
List<MyClass> l = new List<MyClass>();
l.Add(new MyClass());
l.Add(new MyClass());
MyScriptableObject mso = new MyScriptableObject();
mso.list = l;
AssetDatabase.CreateAsset(mso, "Assets/test.asset");
}
}
using UnityEditor;
class EditorScript
{
[MenuItem("Test/test")]
static void Execute()
{
List<MyClass> l = new List<MyClass>();
l.Add(new MyClass());
l.Add(new MyClass());
MyScriptableObject mso = new MyScriptableObject();
mso.list = l;
AssetDatabase.CreateAsset(mso, "Assets/test.asset");
}
}
файл MyScriptableObject.cs:
Синтаксис:
Используется csharp
using System;
using System.Collections.Generic;
using UnityEngine;
public class MyScriptableObject : ScriptableObject
{
public List<MyClass> list;
}
[Serializable]
public class MyClass
{
public int someInt;
[SerializeField]
int anotherInt;
}
using System.Collections.Generic;
using UnityEngine;
public class MyScriptableObject : ScriptableObject
{
public List<MyClass> list;
}
[Serializable]
public class MyClass
{
public int someInt;
[SerializeField]
int anotherInt;
}
Данный код работает как надо, - создается объект класса MyScriptableObject унаследованного от ScriptableObject, содержащего объекты класса MyClass, и потом все это дело сериализуется в asset - но если MyClass унаследовать от ScriptableObject, то объекты класса MyClass не сериализуются.
Вообще задача состоит в следующем: есть некая структура в виде графа, узлы которого представлены классом Node, этот класс содержит
ссылки на другие объекты класса Node в виде List<Node>, т.е. существуют перекрестные ссылки. В редакторе генерируется этот граф, сохраняется как ассет, но при следующем запуске проекта или после Start/Stop элементы List<Node> равны Null.
Может кто-нибудь сталкивался с подобным и нашел решение? Буду рад любым предложениям по данному вопросу.