Здесь, в этой функции, мы делаем то же самое, что и SaveData, но наоборот, мы создаем локальную переменную области видимости с типом ButtonData, которую мы используем JsonUtility.FromJSON для распаковки данных, которые мы ранее сохранили в нашей playerprefs. Затем мы проверяем, имеет ли значение btnData значение null, и если это так, мы возвращаемся оттуда, но оно не равно null, мы устанавливаем размер кнопки и альфа-значение btnData.Размер и btnData.Alpha доступ к которым осуществляется через распакованный JSON для преобразования данных объекта, мы также устанавливаем привязанную позицию rectTransfrom к новым данным Vector2 с сохраненными PosX и PosY. Мы вызываем LoadData функцию в начале, чтобы данные автоматически загружались в первую очередь init.
Я понимаю что общаюсь с пастой, но за все
FindObjectsOfType ().ToList();
Debug.Log();
Готов руки оторвать оригинальному автору этой статьи. Да и вообще, не стоит стесняться и многие вещи в чистый .net выкидывать из юнити. Тот же UIManager можно статичным объектом запилить, и пусть все снизу стучатся к нему.