Вопрос архитектуры

Программирование на Юнити.

Вопрос архитектуры

Сообщение Farbeyond 08 янв 2022, 19:59

Гайз, как лучше и правильней всего связывать UI на Screen Space канвасе с игровыми объектами? Например, прогресс бары с хп игрока, всякие статы и всё остальное что только возможно. На каждой сцене вручную прокидывать ссылки для всего как-то супер неудобно, особенно для геймдизайнеров. Обычно я просто получал нужные компоненты через метод FindObjectOfType, но если скриптов много, которым нужны ссылки на компонент, то наверное это не лучшее решение, будет старт нагружать. Пробовал делать через синглтон, вроде удобно, но нормально ли иметь доступ к игроку из любой точки? Или в определенном виде это нормальное решение? Еще думал над вариантом создать некий интерфейс IDataInitializer, реализовать его в каждом скрипте, где нужна ссылка на какой-то компонент, и в каком-то скрипте-менеджере на старте получать все объекты типа IDataInitializer, что бы раздать ссылки. Вот только не знаю, не будет ли для старта еще тяжелее это всё получить и распределить, чем отдельно вызывать FindObjectOfType для 10-15 объектов.
Что думаете? Как вообще обычно делают более опытные разработчики в подобных случаях?
Farbeyond
UNец
 
Сообщения: 10
Зарегистрирован: 28 авг 2019, 22:45

Re: Вопрос архитектуры

Сообщение 1max1 08 янв 2022, 20:14

Синглтон будет норм если у тебя 1 игрок, если их планируется больше, то будет тяжко потом переделывать. Для основных скриптов можно сделать менеджер, который будет содержать в себе все нужные ссылки. Взаимодействие также можно организовать через события, вместо того чтобы скрипт обращался напрямую к игроку и менял ему что-то, или менял себя, в зависимости от состояния игрока, можно делать это через систему событий.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Вопрос архитектуры

Сообщение Farbeyond 10 янв 2022, 02:45

Понял, спасибо
Farbeyond
UNец
 
Сообщения: 10
Зарегистрирован: 28 авг 2019, 22:45


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12