Нужно ли избавляться от менеджеров-классов при написании классов в UNITY 3D?
Я сейчас пишу игры на c# в UNITY, и мне хотелось бы узнать, как лучше создавать классы.
Насколько я понимаю класс - это сущность из реального мира, перенесённая в код, у которой есть функции и тд.
Например, я создал класс TimeManager, в котором есть функции получения текущего множителя времени (от 0 до 1) и функция, позволяющая задать множитель времени (тоже от 0 до 1, используя Mathf.clamp).
Я использую этот класс для того, чтобы замедлять объекты в сцене. Грубо говоря я пилю клон SUPERHOT, где контролирую каждый объект и его velocity.
Мне бы хотелось узнать, как бы записали такой класс крутые программисты.
Если вопрос глупый, то не обессудьте, только на 2 курсе.
Ответы (1 шт):
Класс это не сущность от реального мира, а набор полей и методов, то есть информации и операций над ней. Классы могут быть абстрактными и совсем не реальными.
Какими должны быть классы и в принципе все, описано в пяти принципах SOLID. Начинать нужно с Single Responsibility Principle, closed Principle (open потом), и форматировать код согласно общепринятым конвенция языка.
Один из основных навыков, это навык нейминга (именования) классов, полей и методов, чему посвящают весомую долю страниц в книгах о программировании. Если класс называется xxxManager или xxxController, то ты сам не понимаешь чем он вообще занимается, но это что-то точно связано с xxx. TimeManager не чем явно не заведует и не управляет, а является статической точной доступа к множителю времени, то есть TimeMultiplayer.value.
Если бы ты тупо Ok Google: Unity3d game speed, сразу бы узнал, что такой класс в Unity3D уже есть и меняет скорость игры Time.timeScale. Только не говори, что Google проходят на 3ем курсе.