Ребят, помогите разобраться с EditorGUI
Проблема следующая: при первом запуске окна, все работает как надо, после нажатия "Confurm", все тоже ок. Но дальше, при нажатии кнопок "Edit" или "add new" ничего не происходит. Не могу вдуплить почему. Ниже приложу скрины и код.
private void OnGUI()
{
GUILayout.Label("Работа со списком ВСЕХ бонусов в игре", EditorStyles.boldLabel);
GUILayout.Space(10);
if (bonusList.Count == 0)
{
AddBonus();
}
else
{
GUILayout.BeginHorizontal();
selectedBonus = EditorGUILayout.Popup(selectedBonus, bonusNames.ToArray());
editButt = GUILayout.Button("Edit");
addButt = GUILayout.Button("Add new");
GUILayout.EndHorizontal();
if (editButt)
EditBonus(selectedBonus);
else if (addButt)
AddBonus();
else
ShowBonus(selectedBonus);
//Сохранение
if (GUILayout.Button(new GUIContent("Save", "Сохраняет все новое/редактированное в файл")))
{
bonusNames.Clear();
foreach (BonusData bd in bonusList)
{
string str = JsonUtility.ToJson(bd);
bonusNames.Add(str);
}
File.WriteAllLines(path, bonusNames.ToArray());
}
}
}
Метод "AddBonus()":
private void AddBonus()
{
GUILayout.Label("Добавление бонуса", EditorStyles.boldLabel);
GUILayout.Space(10);
BonusData bd = new BonusData();
GUILayout.BeginHorizontal();
GUILayout.Label("Сокращенное название(для вызова):");
name = EditorGUILayout.TextField(name);
GUILayout.EndHorizontal();
GUILayout.Space(5);
GUILayout.BeginHorizontal();
GUILayout.Label(new GUIContent("Полное описание бонуса/заклинания:",
"Beta: пока нужно следить что бы описание совпадало с остальными данными"));
fullName = GUILayout.TextArea(fullName);
GUILayout.EndHorizontal();
GUILayout.Space(5);
GUILayout.BeginHorizontal();
GUILayout.Label("Цель(-и):");
selectedTarget = EditorGUILayout.Popup(selectedTarget, targets);
target = targets[selectedTarget];
GUILayout.EndHorizontal();
GUILayout.Space(5);
GUILayout.BeginHorizontal();
GUILayout.Label("Значение:");
value = EditorGUILayout.IntSlider(value, 0, 20);
GUILayout.EndHorizontal();
GUILayout.Space(10);
GUILayout.Label("Сохранить можно только если все поля заполнены");
using (new EditorGUI.DisabledGroupScope(name == string.Empty || fullName == string.Empty
|| target == string.Empty || value == 0))
{
if (GUILayout.Button(new GUIContent("Add bonus", "Завершение редактирование и переход к окну Info")))
{
//Перепись данных. Редактируемый бонус будет удален и добавлен в конец списка
bd.name = name.ToLower();
bd.fullName = fullName;
bd.target = target;
bd.value = value;
bonusList.Add(bd);
bonusNames.Add(bd.name);
}
}
}
Скрин AddBonus:
Скрин основной части:

