Usar Animator na UI da Unity causa problemas de performance?
- Abnner Urzedo
- 21 de out. de 2024
- 2 min de leitura
Atualizado: 22 de out. de 2024
Bem vindos ao primeiro post do blog da Urz Games!
A um tempo atrás, especialmente de 2019 para trás, houveram várias discussões sobre o uso do Animator para animações de UI, especialmente em dispositivos móveis. O que acontece é que muitos desenvolvedores notaram uma notável quantidade de chamadas de renderização no profiler de seus jogos, relacionadas ao CanvasRenderer, e consequentemente um perda de performance.
Não demorou para descobrirem que o culpado disso era o Animator. Por causa da maneira que esse sistema funcionava, o Animator marcava o Canvas como 'dirt ' o que forçava a atualização de seus componentes, mesmo que nada estivesse acontecendo de fato. Isso gerava, processamento de CPU desnecessário e uma grande quantidade de Garbage Collector.
A solução encontrada, foi usar a técnica de Tweening, uma maneira de fazer uma transição entre dois estados ou valores. Nisso, surgiram muitas ferramentas, como a bem conhecida DOTween, que são leves e tem um bom fluxo para alterar propriedades como posição, escala e cores, ou seja, tudo que você precisa para fazer animações da HUD.
Mas ai, a Unity trouxe na atualização 2019.3, mais especificamente na 2019.3.0f5, uma grande atualização que visava ser o começo da correção desse problema da interação Animation-HUD. Nas notas de atualização, tem o seguinte texto:

Vemos que eles corrigiram um dos principais problemas nesta atualização.
Após isso, vieram outras melhorias nas versões mais recentes da Unity, incluindo otimizações no sistemas de UI, melhorias no Animator e nos gerenciamentos de recálculos.
Dito tudo isso, a pergunta que fica é, usar Animator na HUD vai prejudicar meu projeto? E a resposta mais direta é, não, a depender a versão do seu projeto.
Mas outro questionamento surgiu entre muitos fóruns de desenvolvedores: vale a pena usar o Animator na HUD?
Ora, se as animações de UI, no geral, são tão simples, envolvendo muitas vezes apenas escala, posição e no máximo cores, por que usar o um motor de animação complexo como o Animator para isso?
Essa é uma discussão bem válida, visto que se você já usou alguma ferramenta de Tweening, provavelmente, assim como muitos desenvolvedores, gostou muito do quão customizável e simples é de usá-la. Além disso, ela permite que o controle de valores seja mais preciso, visto que, os valores são controlados por script, característica essa que inclusive faz com que o Tweening se encaixe melhor na sua arquitetura de projeto.
Mas isso faz com o Animator seja pior? De modo algum. Mas vale lembrar que a função do Animator é trabalhar em animações complexas, e quando você decide usá-lo na HUD, tenha em mente que estará usando um baita de um sistema inteiro, para fazer ações e cálculos, que no geral, são simples.
Então, para concluir este assunto, quando usar um ou outro? A resposta é, depende:
Se sua UI requer animações complexas e sequenciais, o Animator ainda é uma escolha viável, especialmente com as otimizações da Unity. Ele oferece flexibilidade e controle detalhado sobre as transições de estado.
Para animações simples como mover, escalar ou mudar a cor de um botão, Tweening é mais eficiente e fácil de implementar.
Se você usa uma versão anterior a 2019, NÃO USE O ANIMATOR.
Gostou do conteúdo?
Considere seguir nossa página, logo traremos mais assuntos como este.
Comments