samana писал(а):Попробовал как-то привести ваш код в более приемлемый вид (для моего восприятия).
Написал комментарии ( //-> ) там где поменял логику и прочее.
Ваш метод отрисовки createHightScoreEntryTransform не трогал (вроде), так как я не знаю что там происходит.
Попробуйте понять следующий код и как-то внедрить его в свой проект, либо оставить таким, если он подойдёт.
Любой дополнительный рефакторинг в ваших руках.
Уважаемый гуру, сейчас всё стабильно работает, как в редакторе Unity, так и при в билде. Единственным недостатком является то, что создаётся только одна запись, и она перезаписывается, сейчас пытаюсь понять почему. Я настолько уже ни в чём не уверен из-за этой ошибки, что хочется чтобы меня увезли в психдиспансер...
Судя по дебагам, такое ощущение, что при вызове AddScore создаётся новая чистая таблица и записывается результат туда...
Синтаксис:
Используется csharp
Debug перед ScoresList.Add()
{"ScoresList":[{"Score":300,"Name":"ощзо"}]}
UnityEngine.Debug:Log (object)
highScoreTable/ScoreTable:AddScore (int,string) (at Assets/highScoreTable.cs:114)
{"ScoresList":[{"Score":300,"Name":"ощзо"}]}
UnityEngine.Debug:Log (object)
highScoreTable/ScoreTable:AddScore (int,string) (at Assets/highScoreTable.cs:114)
и Debug после _scoreTable.AddScore();
Синтаксис:
Используется csharp
{"ScoresList":[{"Score":300,"Name":"дзхъ"}]}
UnityEngine.Debug:Log (object)
highScoreTable:AddHightScoreAndSave (int,string) (at Assets/highScoreTable.cs:44)
UnityEngine.Debug:Log (object)
highScoreTable:AddHightScoreAndSave (int,string) (at Assets/highScoreTable.cs:44)
Наверное надо было сразу написать: окно для записи имени игрока появляется после смерти игрока. После сохранения результата происходит или перезапуск сцены, или можно в главное меню уйти.
Запись в таблицу вызывается в другом скрипте следующем образом:
Синтаксис:
Используется csharp
FindObjectOfType<highScoreTable>().AddHightScoreAndSave(score, text);