Страница 1 из 1

Как лучше/правильнее реализовать архитектуру проекта игры в

СообщениеДобавлено: 13 ноя 2022, 19:44
ThomasBak
Игра карточная, 2Д, в основном идёт работа с UI, а также некоторое общение между клиентом и сервером в реальном времени посредством Вебсокета.
У меня такая идея.
Один класс (WS_Controller) отвечающий только за Вебсокет.
Другой класс — UI_Controller, в нём будут храниться ссылки на все объекты Canvas'а.
И остальные классы это на каждую логику свой класс, то есть, один класс для реализации логики ЧАТА, другой класс для логики НАСТРОЕК, например.

Вообще не понимаю, как это делается правильно. Не хочу говнокод писать и считаю, что нормальный программист, должен всегда преобразовывать повторяющийся код в метод/функцию и делать всё грамотно, без хаоса.

А ещё у меня такой вопрос, каким способом лучше брать объект из другого класса? Например в логике ЧАТА мне нужно будет брать переменные из класса UI_Controller

Буду благодарен за любую подсказку, наставление!

Re: Как лучше/правильнее реализовать архитектуру проекта игры в

СообщениеДобавлено: 13 ноя 2022, 22:57
1max1
Написание хорошей архитектуры приходит с опытом и далеко не быстро. Не думаю что кто-то сможет дать тебе конкретный ответ на абстрактный вопрос.
А ещё у меня такой вопрос, каким способом лучше брать объект из другого класса? Например в логике ЧАТА мне нужно будет брать переменные из класса UI_Controller

Передай туда ссылку через инспектор.

Re: Как лучше/правильнее реализовать архитектуру проекта игры в

СообщениеДобавлено: 14 ноя 2022, 01:26
Saltant
Оратор выше прально сказал, что приходит всё это с опытом. Правильных путей нет, просто ты сделаешь как тебе удобно, со временем если проекты делаешь часто, то отрефакторишь свою архитектуру.
Я вот например для вебгл проектов сделал себе шаблон в виде пакета юнити и при новом проекте просто его импортирую. Я использую паттерн Singleton, у меня есть GameController он синглтон и в нем ссылки на различные менеджеры (sound, event, player и т.д), т.е если я хочу взять что то из менеджера какого то, то иду в геймконтроллер и получаю этот менеджер через дженерик функцию.