Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Duda optimización

Iniciado por ytinU, Febrero 09, 2017, 01:27:38 AM

Tema anterior - Siguiente tema
Tus problemas con el frame rate pueden ser por muchos motivos, tienes que utilizar el debuger aunque lo mas posible como dice musaranya es que sea por demasiados objetos en pantallas, danos mas información haz una captura del cuadro de stats para ver que como andas de geometría y de carga de CPU, y haz una captura del profiler seleccionando el momento que mas carga tienes. Asi podremos ayudarte mas.

Con un pool lo que consigues es evitar usar innecesariamente Instantiate y Destroy que creo recordar afectaba bastante al rendimiento por el recolector de basura, básicamente tienes un objeto con una referencia a otros objetos iguales, luego cómo hagas para referenciarlos (array, arraylist...), ajustar la posición de cada objeto (el pool designa la posición donde se activará o es el propio objeto) e incluso qué objetos activas dentro del pool depende de cómo lo programes, pero es muy útil y te servirá mucho, en tu juego ya lo usas en el sistema de partículas y estaría bien que programaras uno tuyo propio para los enemigos y las balas. Suerte!!

Cita de: lightbug date=1486675546Jaja las armas estan muy bien, claro exactamente para esos proyectiles se usa el pool, tenes muchos ejemplos y tutoriales en internet.
   
   
      Yo lo hago algo asi, seteo el num o capacidad de la pool, Creo en start cada gameObject y los meto en una lista (pool) (que sirve para mantener el orden de que objeto se activa o desactiva) entonces la lista tiene obj1, 2 ,3 ... n  . Va activando el primero no activado (el 1) y lo pasa al fondo, y asi, cuando un objeto de estos proyectiles colisiona se desactiva, pasa a estar listo para dispararse de nuevo. Lo complicado de esto es ordenarlo, osea pasarlo al ultimo lugar, no encontre como poder hacerlo en una lista lo cual me parecio muy raro, de seguro hay un metodo acorde para hacerlo.
   
   
       
   
   
       
   


Lo aplicaré en un proyecto futuro, me a desmotivado que no encuentre los bugs del navmesh y además de las texturas y cuando alguien hace un juego y es novato tiene altas expectativas yo queria buenos gráficos y eso :C.
 
Cita de: esr date=1486678454Tus problemas con el frame rate pueden ser por muchos motivos, tienes que utilizar el debuger aunque lo mas posible como dice musaranya es que sea por demasiados objetos en pantallas, danos mas información haz una captura del cuadro de stats para ver que como andas de geometría y de carga de CPU, y haz una captura del profiler seleccionando el momento que mas carga tienes. Asi podremos ayudarte mas.
   


Puse en google stats y pensé que tenia que descargar algo para que me diera el rendimiento xD(es lo primero que me salia y además era de unity), y luego habia un cuadro muy interesante en el editor queponia stats investigaré a fondo para así saber que tengo que mostrarles y no solo 'tantear'.
 
Cita de: juanma_teso date=1486739940Con un pool lo que consigues es evitar usar innecesariamente Instantiate y Destroy que creo recordar afectaba bastante al rendimiento por el recolector de basura, básicamente tienes un objeto con una referencia a otros objetos iguales, luego cómo hagas para referenciarlos (array, arraylist...), ajustar la posición de cada objeto (el pool designa la posición donde se activará o es el propio objeto) e incluso qué objetos activas dentro del pool depende de cómo lo programes, pero es muy útil y te servirá mucho, en tu juego ya lo usas en el sistema de partículas y estaría bien que programaras uno tuyo propio para los enemigos y las balas. Suerte!!
   


No utilizo un pool en el SP, los instancio y destruyo xD
 
Gracias a todos por los consejos, ahora sólo me queda por aprender las técnicas que me dieron, ya subire el proyecto que les mostre, pero no sé porque me da error...subi el .exe :C

Si entendi bien buscas a los 4 jugadores con el overlapSphere?
 
Si es asi puedes usar un GameObject.FindWithTag o algo similar no recuerdo la funcion exacta

Visita http://www.programacionwh.com encontraras tutoriales y muchas cosas .


Tambien puedes visitar mi canal de YouTube https://www.youtube.com/channel/UClSCTn0wPN1iFjED0yaoJUA



Etiquetas: