Делаю эникей-интерфейс (окошко с настройками проекта) с помощью EditorWindow, данные сохраняю с помощью ScriptableObject.
Код самого ScriptableObject (SpritesGroup)
Синтаксис:
Используется csharp
using System.Collections.Generic;
using UnityEngine;
namespace Editor
{
[CreateAssetMenu(fileName = "SpritesGroup", menuName = "Scriptable Objects/Sprites Group")]
public class SpritesGroup : ScriptableObject
{
[SerializeField] private List<SpriteInfo> sprites;
public SpritesGroup()
{
sprites = new List<SpriteInfo>();
}
public List<SpriteInfo> Sprites => sprites;
public void AddSpriteInfo(SpriteInfo spriteInfo)
{
sprites.Add(spriteInfo);
}
}
}
using UnityEngine;
namespace Editor
{
[CreateAssetMenu(fileName = "SpritesGroup", menuName = "Scriptable Objects/Sprites Group")]
public class SpritesGroup : ScriptableObject
{
[SerializeField] private List<SpriteInfo> sprites;
public SpritesGroup()
{
sprites = new List<SpriteInfo>();
}
public List<SpriteInfo> Sprites => sprites;
public void AddSpriteInfo(SpriteInfo spriteInfo)
{
sprites.Add(spriteInfo);
}
}
}
Класс SpriteInfo
Синтаксис:
Используется csharp
using UnityEngine;
namespace Editor
{
[System.Serializable]
public class SpriteInfo
{
[SerializeField] private string name;
[SerializeField] private Sprite sprite;
public SpriteInfo()
{
name = "new sprite";
sprite = null;
}
public string Name
{
get => name;
set => name = value;
}
public Sprite Sprite
{
get => sprite;
set => sprite = value;
}
}
}
namespace Editor
{
[System.Serializable]
public class SpriteInfo
{
[SerializeField] private string name;
[SerializeField] private Sprite sprite;
public SpriteInfo()
{
name = "new sprite";
sprite = null;
}
public string Name
{
get => name;
set => name = value;
}
public Sprite Sprite
{
get => sprite;
set => sprite = value;
}
}
}
Для добавления нового элемента в список использую метод AddSpriteInfo(SpriteInfo spriteInfo) в SpritesGroup.
И вроде бы всё работает, в ScriptableObject список пополняется
НО после перезапуска Unity содержимое списка исчезает.
Казалось бы схема дохлая, это так не работает, но если вручную в окне Inspector задать размерность списка, то всё ок! Все созданные элементы после перезапуска Unity на месте.
Собственно вопрос в чем разница, между Юнити-решением изменения размерности сериализованного списка и моим?
И соответственно, как сделать так, чтобы я мог через метод AddSpriteInfo добавлять элементы в список и он сохранялся?