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