Документация
Описание
Пакет для работы с JSON конфигами в Unity.
Работает в связке с Runner
Общая информация
При создании нового объекта типа Config, Unity автоматически заригестрирует конфиг на Runner.
Пакет работает с Serializable типами данных, например:
- int или float
- string
- bool
- array или list
Работа с пакетом
1) Создание кастомной стуктуры данных( Serializable ), пример:
[System.Serializable]
public struct Data
{
public int number;
public float float_number;
public string text;
public bool boolean;
public int[] array;
public List<string> list;
}
2) Создание объекта типа Config.
Пример 1( для структуры без array и/или list):
[System.Serializable]
public struct Data
{
public int number;
public float float_number;
public string text;
public bool boolean;
}
[SerializeField] private string configName = "test.json";
[SerializeField] private Data defaultData = new Data();
private Config<Data> config;
private void Start()
{
config = new Config<Data>(configName, defaultData);
}
Пример 2( для стуктуры с array и/или list):
Если в Config используется list и/или array, то в них должен присутствовать хотя бы 1 элемент по умолчанию.
[System.Serializable]
public struct Data
{
public int number;
public float float_number;
public string text;
public bool boolean;
}
[System.Serializable]
public struct DataArray
{
public List<Data> list;
}
[SerializeField] private string configName = "test.json";
[SerializeField] private List<Data> defaultData;
private Config<DataArray> config;
private void Start()
{
DataArray dataArray = new();
dataArray.list = defaultData;
config = new Config<DataArray>(configName, dataArray);
}
3) Подписка на события Loaded, Changed, Saved:
private void OnEnable()
{
config.Loaded += UpdateDisplayData;
config.Changed += UpdateDisplayData;
config.Saved += UpdateDisplayData;
}
private void UpdateDisplayData()
{
timeoutField.text = config.Data.timeout.ToString();
textWaitField.text = config.Data.textWait.ToString();
statusField.isOn = config.Data.status;
counterField.text = config.Data.counter.ToString();
}
4) Получение данных из конфига на момент старта программы:
var startConfig = config.GetStartStruct();
5) Получение данных из кофига:
var config = config.Data;
6) Сохранение и обновление данных:
-
Обновление:
Для обновления конфига следует использовать Инструмент:
-
Сохранение:
config.Save();
Config не сохраняется автоматичеки!
7) Атрибуты:
-
Для добавления описания полей можно использовать атрибут [ConfigDescription], пример:
[System.Serializable] public struct Data { [ConfigDescription("Описание")] public string text; }
Таким образом вместо:
"text": "<value>"
Получится:
"[description]text": { "value": "<value>", "description": "Описание" }
-
Для сокрытия полей можно использовать атрибут [ConfigVisibility], пример:
[System.Serializable] public struct Data { [ConfigVisibility] public string text; }
Таким образом вместо:
"text": "<value>"
Получится:
"[visibility]text": "<value>"
-
Для запрещения редактирования полей можно использовать атрибут [ConfigСhangeability], пример:
[System.Serializable] public struct Data { [ConfigСhangeability] public string text; }
Таким образом вместо:
"text": "<value>"
Получится:
"[changeability]text": "<value>"
-
Для запрещения редактирования полей можно использовать атрибут [ConfigSlider], пример:
[System.Serializable] public struct Data { [ConfigSlider(float min, float max)] public float value; }
Таким образом вместо:
"value": <value>
Получится:
"[slider]value": { "value": <value>, "min": <min>, "max" : <max> }
Команда
- Разработчик Дьячков Антон