Buenas a todos, seré breve:Para optimizar código, es mejor dejar o por lo menos tratar de dejar solo un update que maneje casi todo, y solo llamar a el resto de funciones de otros scripts por medio de corrutinas? o es normal dejar el update en cada uno de todos los script que tengo?. EjemploTengo script con sus update para:
- inclinar un objeto
- otro para spawn de enemigos
- otro para mover el pj principal
- otro de controles y manejo (pausar y blabla)
Ahora, puedo dejarlo algo así? o es que estoy pensando bobadas? jeejeje
- Scrip principal (Unico Update)
- inclinar un objeto (Corrutinas)
- otro para spawn de enemigos (Corrutinas)
- otro para mover el pj principal (Corrutinas)
- otro de controles y manejo (pausar y blabla) (Corrutinas)
Muchísimas gracias por sus respuestas.
oohhh my god ! jajaja tomandote la frase prestada: estas pensando en bobadas xD ahora en serio ... ya lo tienes organizado bien. las corrutinas van muy bien pero solo para hacer su funcion, son como los medicamentos: no hay que abusar tampoco porque tendras un problema mayor del que pretendias solucionar.a parte de eso, claro que hay que tratar de optimizar siempre el codigo lo maximo que te sea posible pero la optimizacion no depende del uso de corrutinas (puede estar tan mal optimizado el codigo dentro de un update como de una corrutina). la optimizacion tiene mas que ver con la organizacion del codigo y un conjunto de reglas sobre las funciones y como utilices estas: por ejemplo, no utilizar nunca gameObject.GetComponent dentro de un Update.Un saludo y suerte
Los eventos(del ratón, renderizado, físicas, UI, ... ) necesitan de un script añadido al GameObject.Puedes utilizar corrutinas siempre que no necesites detectar un evento de Unity.
Mi consejo es que midas y pruebes. Hay expertos que dicen una cosa y otros otra, pero cada proyecto es un mundo. Mide y prueba, profiling everywhere....
Cita de: Arthure date=1452317233" data-ipsquote="" data-cite="Arthure" class="ipsQuoteno utilizar nunca gameObject.GetComponent dentro de un Update.
Hola,
y dónde iría ese GetComponent?
Dentro de un Awake?
(noob here xd)
Si @Monsieur Null (//<___base_url___>/profile/27733-monsieur-null/), puedes cachear un componente de cualquier tipo para acceder más rápidamente:
MiComponente comp;
void Start ()
{
comp = GetComponent<MiComponente>();
}
void Update ()
{
comp.funcion();
}
//Es más eficiente que
void Update ()
{
GetComponent<MiComponente>().funcion();
}
Lo correcto es hacerlo en el awake, alargas el tiempo de carga pero durante le juego eres mas estable.