Я делаю небольшую игру на своем небольшом игровом движке, созданном на OpenGL c ++. Мне нужно сделать много классов, таких как Камера, BatchRenderer, AudioEngine, ParticleEngine, Уровень, Игрок, Зомб ie, Люди и т.д. c. Теперь игрок должен взаимодействовать с такими классами, как Camera, BatchRenderer, AudioEngine, ParticleEngine, данные уровня из класса Level, Zomb ie, Human, et c. И я передаю большинство из них по ссылке, которая инициализирована в моем классе основной игры.
// AudioEngine и ParticleEngine, которые созданы в классе основной игры, и игрок должен воспроизводить звук и моделировать частицы. TextureID, позиция, радиус (размер), вращение, глубина и цвет необходимы для рендеринга игрока.
Player::Player(AudioEngine& a_audioEngine, ParticleEngine& a_particleEngine
GLuint a_textureID, glm::vec2 a_position, float a_radius,
float a_rotation, float a_depth, Color a_color)
{...}
// Камера для проверки, находится ли игрок в поле зрения. levelData, зомби, люди, чтобы проверить обнаружение столкновений с игроком.
void Player::update(Camera& camera, std::vector<std::string>& levelData,
std::vector<Zombie>& zombies, std::vector<Human>& humans,
float deltaTime)
Здесь вы можете увидеть, что слишком много аргументов передается классу игрока, а также нужно больше в будущем. Но я читал много людей, говорящих, что плохо иметь более двух или трех аргументов в функции. И в моей игре есть много классов, которые принимают более 5 или 6 аргументов.
Правильно ли это для игры или это плохая практика? Пожалуйста, скажите мне, как я могу решить эту проблему.
Извините за плохой английский sh. Большое спасибо за чтение.