Jump to content
UnitySpain
Sign in to follow this  
banics

Lag al mostrar UI por primera vez.

Recommended Posts

19 hours ago, banics said:

 

Captura.PNG

Ese 1.3 KB de GC Alloc es constante? En Behaviour Update. Si querés "profilear" duro activá deep profile, además de crear y ejecutar una build con autoconnect profiler, luego vas bien a fondo (de la jerarquía) y podés ver qué te causa eso. Si es una cosa del start o awake no pasa nada (ignorá lo que dije).

Share this post


Link to post
Share on other sites

Saludos a todos. Siento el silencio de estos días, pero he llegado de vacaciones hace poco.

He probado a desactivar el StandAloneInput del event manager por código, pero el problema persiste.

En cuanto al profiler, no lo controlo mucho, pero me he ido fijando en las causas que daban porcentaje alto, las he ido desactivando por probar y nada de nada. Por ejemplo, en un menú me salia un alto porcentaje en el animator de un objeto. Desactive dicho objeto, dejo de salirme en el profiler, pero el lag en primera pulsación persistía en el movil. También algún Awake me daba alto porcentaje, lo desactive y nada....yo me estoy volviendo loco ya. Lo que me parece rarísimo, es que haya lag incluso pulsando por primera vez al vacío, sin ningún botón de por medio ni nada.

Os paso algunas capturas del profiler desglosado, pero vamos, que da lag en la primera pulsación independientemente del menú. La única manera que no da lag es desactivar el Standalone Input module (por lo cual dejarían de funcionar los botones) y hacer sistema de rayos para la pulsación de estos.

Gracias y un saludo.

Captura1.png

Captura2.png

Edited by banics

Share this post


Link to post
Share on other sites

No sé lo del StandAloneInput. Ahora bien, yo nunca he necesitado de hacer estos malabares para hacer que un UI funcione. Yo creo que los problemas vienen más de errores de base del código. Y el apartado del profile mencionado anteriormente ayudaría.

11 hours ago, banics said:

Saludos a todos. Siento el silencio de estos días, pero he llegado de vacaciones hace poco.

He probado a desactivar el StandAloneInput del event manager por código, pero el problema persiste.

En cuanto al profiler, no lo controlo mucho, pero me he ido fijando en las causas que daban porcentaje alto, las he ido desactivando por probar y nada de nada. Por ejemplo, en un menú me salia un alto porcentaje en el animator de un objeto. Desactive dicho objeto, dejo de salirme en el profiler, pero el lag en primera pulsación persistía en el movil. También algún Awake me daba alto porcentaje, lo desactive y nada....yo me estoy volviendo loco ya. Lo que me parece rarísimo, es que haya lag incluso pulsando por primera vez al vacío, sin ningún botón de por medio ni nada.

Os paso algunas capturas del profiler desglosado, pero vamos, que da lag en la primera pulsación independientemente del menú. La única manera que no da lag es desactivar el Standalone Input module (por lo cual dejarían de funcionar los botones) y hacer sistema de rayos para la pulsación de estos.

Gracias y un saludo.

Captura1.png

Captura2.png

Qué es ese gameobject que tiene una animación que consume casi el 40% del tiempo?

Share this post


Link to post
Share on other sites
14 hours ago, iRobb said:

No sé lo del StandAloneInput. Ahora bien, yo nunca he necesitado de hacer estos malabares para hacer que un UI funcione. Yo creo que los problemas vienen más de errores de base del código. Y el apartado del profile mencionado anteriormente ayudaría.

Qué es ese gameobject que tiene una animación que consume casi el 40% del tiempo?

Hola iRobb. Es un sprite aimado simplemente. Es mas, lo he comprobado ahora y solo ocupa el 1.3%...yo cada día entiendo menos XD. 

Pero vamos, que ese objeto está solo en un menú. Además que lo quite para probar y seguía dando el tirón la primera pulsación.

Share this post


Link to post
Share on other sites
On 7/10/2019 at 10:04 PM, banics said:

Saludos a todos. Siento el silencio de estos días, pero he llegado de vacaciones hace poco.

He probado a desactivar el StandAloneInput del event manager por código, pero el problema persiste.

En cuanto al profiler, no lo controlo mucho, pero me he ido fijando en las causas que daban porcentaje alto, las he ido desactivando por probar y nada de nada. Por ejemplo, en un menú me salia un alto porcentaje en el animator de un objeto. Desactive dicho objeto, dejo de salirme en el profiler, pero el lag en primera pulsación persistía en el movil. También algún Awake me daba alto porcentaje, lo desactive y nada....yo me estoy volviendo loco ya. Lo que me parece rarísimo, es que haya lag incluso pulsando por primera vez al vacío, sin ningún botón de por medio ni nada.

Os paso algunas capturas del profiler desglosado, pero vamos, que da lag en la primera pulsación independientemente del menú. La única manera que no da lag es desactivar el Standalone Input module (por lo cual dejarían de funcionar los botones) y hacer sistema de rayos para la pulsación de estos.

Gracias y un saludo.

Captura1.png

Captura2.png

Qué es ese gameobject que tiene una animación que consume casi el 40% del tiempo?

Mi única manera de llegar a una conclusión es tener el proyecto entero. Si es un proyecto amateur para ir aprendiendo entonces está bien como está. Si es un proyecto profesional del cual dependen tus ingresos, entonces te puedo ayudar.

Saludos

Share this post


Link to post
Share on other sites
On 7/12/2019 at 12:20 AM, iRobb said:

Qué es ese gameobject que tiene una animación que consume casi el 40% del tiempo?

Mi única manera de llegar a una conclusión es tener el proyecto entero. Si es un proyecto amateur para ir aprendiendo entonces está bien como está. Si es un proyecto profesional del cual dependen tus ingresos, entonces te puedo ayudar.

Saludos

Hola iRobb, gracias por contestar. De momento es un proyecto amateur. Aunque el problema sea leve, me gustaría arreglarlo, ya simplemente por curiosidad de que narices esta fallando.

He hecho una prueba mas.Desactive de inicio el StandAloneInput del event manager. Como tenía un menú preparado de prueba para que se cargara por raycast, después de cargarlo lo volvi a activar. Pues bien, el muy cabrón como que recuerda que tiene que dar lag, y en dicho menú, al pulsar cualquier botón (incluso uno que de momento no hace nada mas que cambiar el texto a blanco cuando se pulsa) pega el lag solo la primera vez.

Mi conlusión es que está fallando por alguna razón ese componente y esta prueba creo que orienta bastante a ello, dado que si cargo los menus por raycast desactivando el StandAloneInput del event manager no da ningún tirón de lag. ¿A alguien le ha pasado algo parecido? Es una jodienda, ya que hacer todo por rayos cuando Unity te da los Button components me parece una cutrada, tanto a nivel optimizable como a funcional.

Gracias de antemano y un saludo.

Share this post


Link to post
Share on other sites

hola. 

al cargar objetos por primera vez a veces ocurre ese Lag en el editor, pero en el build funciona bien.

al menos a mi me suele pasar... porejemplo al instanciar un explosion, o un enemigo, o cualquier cosa por primera vez...

pero solo en el editor... y solo la primera vez... luego va correctamente, y en el build no pasa.

no se si a ti te ocurrira eso...

Share this post


Link to post
Share on other sites
7 hours ago, Igor said:

hola. 

al cargar objetos por primera vez a veces ocurre ese Lag en el editor, pero en el build funciona bien.

al menos a mi me suele pasar... porejemplo al instanciar un explosion, o un enemigo, o cualquier cosa por primera vez...

pero solo en el editor... y solo la primera vez... luego va correctamente, y en el build no pasa.

no se si a ti te ocurrira eso...

Hola Igor. A mi me pasa exactamente al contrario xD. Es decir, en el editor me va perfecto....pero en build es donde ocurre. De todas maneras, no tengo ningún instantiate ni setActives en menús, ya que cada menú tiene un canvas y si quiero visualizarlo se lo desactivo y fuera.

El lag ocurre cuando pulsas cualquier cosa por primera vez...incluso da lag si pulsas algo que no sea un botón.

Un saludo.

Share this post


Link to post
Share on other sites

Hola chicos. Después de un tiempo intentando varias cosas, he dado con media solución. Os explico por que es solo media.

Bien, el lag que lleva dándome por saco desde el principio, descubrí que se divide en dos tipos. Uno es el lag del propio event de los botones (al activar el pointer up, etc..) y otro es el lag al pulsar por primera vez la pantalla.

El primer lag he conseguido solventarlo, simulando nada mas iniciar la app, la pulsacion de un boton de esta manera:      

Quote

 var pointer = new PointerEventData(EventSystem.current); // pointer event for Execute
        ExecuteEvents.Execute(_shopButton.gameObject, pointer, ExecuteEvents.pointerEnterHandler);
        ExecuteEvents.Execute(_shopButton.gameObject, pointer, ExecuteEvents.submitHandler);
        ExecuteEvents.Execute(_shopButton.gameObject, pointer, ExecuteEvents.pointerDownHandler);
        ExecuteEvents.Execute(_shopButton.gameObject, pointer, ExecuteEvents.pointerUpHandler);

Así, si pulso cualquier punto de la pantalla y luego pulso cualquier botón...PUM, no hay lag. Pero claro, para ser una solución limpia, necesito saber si se puede simular (igual que la pulsación del botón) una pulsación a la pantalla. He buscado y no encuentro nada parecido, pero si lograra simular una pulsación a la pantalla, acabaría con el problema del lag.

Gracias de antemano. Un saludo.

Edited by pioj
Por favor, usa el <> o el "quote" para pegar código.

Share this post


Link to post
Share on other sites

haz que el jugador tenga que empezar pulsando la pantalla.

un panel (pantalla) en negro con un cartel de:

"pulse para iniciar"

con un pequeño script que quite ese panel cuando pulses (que se destruya)

asi ya tendrias tu pulsacion inicial sin simularla.

Edited by Igor

Share this post


Link to post
Share on other sites

Hola Igor, gracias por contestar. Es la primera opción que barajamos XD. Al final voy a tener que hacerlo asi, aunque preferiria evitarlo.

No hay ninguna manera de simular un toque a la pantalla?

Gracias y un saludo.

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...