He empezado hace un par de día con Unity y tengo una duda sobre como organizar los scripts de la mejor manera posible para que sea más fácil el desarrollo, y todo lo que veo por Internet me resulta confuso.
En mi caso por ejemplo tengo un objeto Player en un juego tipo runner que:
- No tiene movimiento, solo salto
- Puede realizar un doble salto
- Emite un sonido al saltar
- Emite partículas al correr por el suelo
- Debe dejar de emitir partículas al saltar
- Puede colisionar con obstáculos
He probado dos aproximaciones, ambas incluyen tener código separado en distintos scripts como PlayerManager, PlayerJump, PlayerCollisions, PlayerAudio y PlayerParticles.
Event manager
Los scripts se comunican entre sí emitiendo y escuchando eventos, los cuales harán una acción determinada al ser recibidos.
Es una aproximación con muchas posibilidades, pero deja el código más confuso de entender bajo mi punto de vista ya que tienes que tener una lista de suscripciones y desuscripciones a eventos en OnEnabled y OnDisabled.
Scripts usando GetComponent
Tenerlo todo separado pero el PlayerJump, al detectar el input de salto y ejecutar el método de salto se encarga de llamar al script de PlayerParticles para parar las partículas, de llamar a PlayerAudio para emitir el sonido de salto, de obtener el RigidBody y el Animator para realizar el movimiento y setear un nuevo estado de animación.
Me parece que queda demasiado acoplado cada script entre sí, aunque es la aproximación que más me convence de momento.
¿Tenéis alguna forma mejor de organizar el código o recomendáis algún canal de Youtube o web que visitar para aprender algo relacionado con esto?