EditorGUILayout.TextField не изменяется / работает Unity 2017.1.1f1

вопрос
С помощью EditorGUILayout.TextField редактирование названий валют позволяет мне изменять текст в поле, но не изменяет переменную и не сохраняет сделанные мной изменения. Видео показывает, что я имею в виду, если вы не понимаете:

https://www.youtube.com/watch?v=fr3cA0_YhXM

Код не работает:

for(int cnt = 0; cnt < Script.CurrencyLevels; cnt++)
{
    EditorGUILayout.LabelField("Currency " + cnt + ": ");
    Script.CurrencyName[cnt] = EditorGUILayout.TextField(Script.CurrencyName[cnt]);
}

Полный код ссылки

https://hastebin.com/omajulihor.cs
https://hastebin.com/eqefuvotog.cs 



Язык: C#
Двигатель: Unity 2017.1.1f1

Заранее спасибо за помощь <3

2 ответа

Решение

Прежде всего, в коде ypur есть строка в начале OnEditorGUI:

Script.CurrencyName = new string[Script.CurrencyLevels];

Что на самом деле устанавливает CurrencyName нет нового пустого массива заданного размера, даже если вы не измените размер. И стирает все, что вы устанавливаете в этой строке:

Script.CurrencyName[cnt] = EditorGUILayout.TextField(Script.CurrencyName[cnt]);

Чтобы это исправить, вы должны написать код для копирования значений из "старого" массива в "новый".

Кроме того, когда вы изменяете какое-то значение внутри своего пользовательского класса редактора, вам нужно добавить две строки кода в OnInspectorGUI() метод, один в начале и в конце:

    public override void OnInspectorGUI()
    {
        //update the editor's representation of the object
        // which you're using the editor for
        serializedObject.Update();

        // Here goes your editor's custom logic

        //Save the changes you or editor's user has made to 
        // the target object
        serializedObject.ApplyModifiedProperties();
     }

Для получения дополнительной информации о serializedObject см ссылку

      pathPattern= EditorGUILayout.TextField("pattern link ends with id.unity",pathPattern);

Проблема в том, что наvoid OnGUI()обновляет каждый кадр
Решение состоит в том, чтобы переопределить строку по умолчанию

Другие вопросы по тегам