Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - digimikeh

#1
General (Antiguo) / Las referencias y la memoria...
Noviembre 04, 2018, 05:07:46 PM
Gracias por tu explicación, efectivamente hubo un momento en que me iba a inclinar por la 2, pero vi que tendría problemas ya que ese proxy debería sobrevivir a las escenas al igual que media y canvascontroller, y no puedo hacer que sobreviva porque usa herencia, cada escena tiene su propio manager de escena y heredan de ese proxy... sería otro spaghetti mas.
 
 
 
Saludos!
#2
General (Antiguo) / Las referencias y la memoria...
Noviembre 04, 2018, 04:24:10 AM
Buenas noches.
 
Tengo una duda con las referencias y el uso de la memoria:
 
Tengo en escena dos clases especiales:
 
CanvasController.cs (controla la interfaz UI)
 
MediaController.cs (controla los videos, efectos de sonido y música)
 
Después tengo 10 objetos que tienen sus respectivas clases, cada uno de estos objetos necesita invocar tanto a CanvasController como a MediaController, que harían ustedes en este caso?:
 
 
 
1) Crear 2 referencias canvasController y mediaController respectivamente en cada una de las 10 clases de objetos en escena...


Ej: objeto1 llama a mediaController para reproducir música
 
     objeto2 llama a canvasController para mostrar un telón
 
     objeto3 llama a mediaController para reproducir efectos de sonido
 
     objeto4 llama a mediaController para reproducir un videoclip
 
     objeto5 llama a canvasController para mostrar unos botones, etc etc.
 
En este caso, todos los objetos podrían llamar directamente a las clases especiales.
 
 
 
2) Crear una clase (supongamos masterController) que haga referencia a canvasController y mediaController y que las otras 10 clases accedan a masterController para que ésta llame a canvasController y mediaController?..  masterController sería algo asi como un guardia que le da acceso a las 10 clases solo mediante él mismo.
 
 
 
Ej: objeto1 llama a masterController para que le diga a mediaController que reproduzca una musica
 
     objeto2 llama a masterController para que le diga a canvasController que muestre un telón
 
     ...etc, etc.
 
 
 
En este caso, los objetos no conocen ni a canvasController ni mediaController, solo tienen referencia a masterController.
 
 
 
Qué tan viable son?.. hay alguna otra alternativa?
 
Gracias, Saludos.
 
 
 
 
 
 
#3
Lo he pensado y puede funcionar, lo lógico es que los eventos vayan en el mismo Jugador, al final es él el que está colisionando, tendría que verlo desde ese punto de vista real, pero aún así, será un poco engorroso acumular tantos eventos en una sola clase.... Lo intentaré.
 
 
 
Saludos y gracias.
#4
Saludos::
 
Les ha pasado que cuando el proyecto se va volviendo mas pesado, empieza a quedar una ensalada de código y de referencias que uno mismo termina se termina perdiendo?.. llevo 9 años con esto de la programación de videojuegos, y aún no logro pillar un modelo de programación que sea escalaBle y que permita mantener ordenado el código cosa que uno no tenga que perderse...

 
 
Por ejemplo, tengo ahora mismo una disyuntiva, si colocar los eventos de colisión en la clase jugador, o colocarlos en un controlador de escena, o colocarlos en la clase que tiene el objeto con el que colisionó el jugador...   
 
1)Si los eventos van en la clase jugador, ésta clase se volverá un caos, pues hay muchos tipos de reacciones diversas que tendrá el jugador dependiendo de con qué objeto colisione.


ej:
 
     OnCharacterControllerCollisionHit(Collider elOtroObjeto)
 
             si elOtroObjeto es un muro, hacer esto...

             si elOtroObjeto es un enemigo que se mueve, hacer esto otro....

             si elOtroObjeto es un enemigo que no se mueve, hacer esto otro....
 
             si elOtroObjeto es una bola gigante, hacer esta otra cosa...
 
             ......
 
             si elOtroObjeto numero554, hacer esta cosa...     (imaginen que hay un centenar de objetos, no los podría controlar a todos dentro de esta clase).



2)Si los eventos van en un controlador (una clase que mani*** los objetos de la escena) siento que este modelo (muy similar a MVC) sería bastante redundante:
 
 
 
ej:
 
       objeto colisionado: oye controlador, mándale este mensaje al jugador, dile que chocó conmigo.

       controlador: vale, yo le doy el recado.

       controlador: oye jugador, el objeto con el que colisionaste te envía este mensaje, dice que has chocado con el.
 
       jugador: ya, gracias, recibido...      (aquí recién está reaccionando a la colisión)


 
 
3)Si los eventos de colisión van en la clase que contiene el objeto colisionado (OnTriggerEnter u OnCollisionEnter) podría ser un poco mas ordenado, pero se pierde el sentido de la POO, ya que el evento estaría en el objeto colisionado y no en el jugador, es decir, el objeto estaría controlando al jugador para que reaccione según ese objeto colisionado.
 
 
 
Como lo hacen ustedes, van programando al vuelo como salga y luego utilizan un modelo de programación, o usan alguna plantilla?...  No se si existe o no algún libro o tutorial sobre como organizar mejor tu proyecto y el código...quizá no he revisado lo suficiente, pero sería muy bueno encontrar algo, no digo algo directamente enfocado a Unity, sino en general...
 
     
 
 
 
 
 
 
 
 
 
 
 
 
#5
General (Antiguo) / Hola
Mayo 27, 2018, 12:58:48 AM
Hola, gracias por la aceptación.
 
Saludos de Chile.