SlideShare uma empresa Scribd logo
1 de 44
Baixar para ler offline
Um Workflow Robusto para
trabalhar com UI na Unity
Até sua avó consegue fazer UI assim
Apresentação
Bruno “Tinnus” Ferreira
Senior Engineer
Juliano Silveira
Technical Artist
Como prover o melhor resultado visual possível
com um workflow eficiente?
Dando poder para os artistas!
Montagem de UI
UI/UX DESIGN TECH ART ENGINEERING
C#
Ferramentas desenvolvidas pelos engineers dão
controle para a UI chegar neles muito perto da
funcionalidade final
Animators + UI na montagem garantem um
workflow quase independente de código novo
Animator com UI não é o jeito mais otimizado do mundo, mas já vamos
chegar nisso
Todas transições e fluxos de UI chegam no
engineer funcionando
Como garantir que todo esse workflow e toda
essa UI tenham uma performance viável?
Parte divertida
Quem monta a UI precisa ter conhecimento da
plataforma para garantir que tudo funciona...
Considerando coisas como:
● Uma UI otimizada dificilmente tem uma limitação parecida com a
de um cenário, não precisamos nos preocupar tanto com
quantidade de triângulos por ex.
● Difícilmente você vai querer comprimir seu atlas.
● Sempre pensar no overdraw.
● Unity UI é bem CPU Costly. Isso é relativamente novo para um
artista, se preocupar com UI reconstruindo e etc.
Trabalhando dentro das limitações
Animator + Canvas
Comprimindo Atlas RGB
Geometria na UI!
Estendendo o sistema de UI
Cenas dos últimos capítulos...
Resumo rápido do que falamos de UI nas últimas apresentações
UI - tips and tricks
UI - tips and tricks
UI - Soft Mask
● Shader customizado de UI com um
input de textura grayscale
multiplicando no alpha.
● Essa textura recebe mapeamento em
screen space com offset alimentado
por um script.
Canvas e batches?
Muitos ícones? Muitas currencies?
Asset Bundles!
Entenda o calcanhar de Aquiris do seu jogo
Entenda o calcanhar de Aquiris Aquiles do
seu jogo
Como os sistemas suportam isso?
Aquiris UI Framework
Objetivos
- Empoderar o designer
- Reduzir o trabalho do programador (e do designer)
- Facilitar mudanças nas telas
- Reduzir código repetitivo
- Resolver o controle de fluxo entre telas
Aquiris UI Framework
Arquitetura
- UI separada em "camadas"
- Cada camada é uma máquina de estados (FSM)
- Ou seja, cada camada pode estar em 1 estado por vez (ou desligada)
- Uma “view” está atrelada a um ou mais estados
- “view” = GameObject que representa uma hierarquia de elementos de UI
- Em geral, prefabs que representam telas ou partes delas
- A view está visível se e somente se algum dos seus estados está ativo
- Estado visual das views é controlado por Animators
- O framework apenas liga as views e seta parâmetros no Animator root da view
Aquiris UI Framework - Arquitetura
Camadas (Layers)
- Identificadas por um inteiro (arbitrário)
- Layer 0, Layer 1, Layer 10 etc
- Noção de ordem entre camadas não é explícita
- Mas pode ser utilizada pelo jogo
- ex. desligar input da tela caso alguma camada superior esteja ligada
- Uma camada possui uma lista de estados possíveis, ou desligada
- Cada estado pertence a apenas uma camada
- Representação abstrata: não existem na cena
- Só o que existe na cena são as views
Aquiris UI Framework - Arquitetura
Estados
- Representadas por uma string (case-insensitive)
- TITLE_SCREEN, GAMEPLAY, MAP, RESULTS, OPTIONS, GAME_OVER etc
- Cada estado faz parte de uma camada
- Atrelados implicitamente a uma lista de views
- Quando o estado é selecionado na camada, suas views são ativadas
- Quando outro estado é selecionado na camada, suas views são desativadas
- Representação abstrata: não existem na cena
- Só o que existe na cena são as views
Aquiris UI Framework - Arquitetura
Views
- Representadas por uma hierarquia de GameObjects na cena
- Cada view pode estar atrelada a vários estados
- Visibilidade da view é controlada pelo sistema + Animator
- Sistema liga a view -> Sistema chama trigger de entrada
- Sistema chama trigger de saída -> sistema desliga a view
- Configuradas com um script (ViewConfiguration)
Aquiris UI Framework - Configuração de views
Intro Delay / Outro Delay
- Delay para chamar o Animator
Exit State
- Estado do Animator para desligar a tela
Transition Triggers
- Triggers de in/out no Animator
- Inclui transição interna
Show on State List
- Em quais estados mostrar a view?
Aquiris UI Framework - Ferramentas
Debug Menu
- Invocado com uma hotkey, permite mudar entre estados diretamente para
testes de fluxo e acelerar o desenvolvimento
Aquiris UI Framework - Ferramentas
Scripts auxiliares
- ChangeStateComponent
- DisableLayerComponent
- StateFlowComponent
- PointerEventDispatcher/Listener
- ToggleEventDispatcher/Listener
Aquiris UI Framework - Código
Como o sistema se apresenta para o código?
- Fluxo controlado por um singleton: UIManager
- Chamadas de controle de fluxo
- ChangeState(string stateName)
- DisableLayer(int layerIndex)
- Callbacks
- OnBeforeViewStateChange
- OnAfterViewStateChange
Como integrar os dados nas telas?
Integração de Dados: MVC com referências diretas
Vantagens
- Suportado nativamente pelo framework
- Controller instanciado automaticamente
- Simples de entender e usar
- Boa performance e uso de memória
Desvantagens
- Referências diretas a componentes
dificultam mudanças
- Gera código repetitivo
- Problemático para casos mais complexos
Integração de Dados: MVVM
Integração de Dados: MVVM
Vantagens
- Referências indiretas reduzem acoplamento
e facilitam mudanças
- Reduz código repetitivo
- Menos código em casos complexos
Desvantagens
- Uso pesado de reflection
- Menos compatibilidade
- Menos performance
- Maior uso de memória
- Mais complexo de entender e usar
Referências
Squeezing Unity: Tips for raising performance
Let's Talk Content Optimization
Obrigado!
@BrunoTinnus
@3DJu
jobs@aquiris.com.br

Mais conteúdo relacionado

Semelhante a Um Workflow Robusto para UI na Unity

LWUIT: Uma alternativa para interface gráfica em dispositivos móveis
LWUIT: Uma alternativa para interface gráfica em dispositivos móveisLWUIT: Uma alternativa para interface gráfica em dispositivos móveis
LWUIT: Uma alternativa para interface gráfica em dispositivos móveisDaniel De Macedo
 
Java - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissionalJava - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissionala41172
 
Projeto lousa interativa_ntmvr_2010
Projeto lousa interativa_ntmvr_2010Projeto lousa interativa_ntmvr_2010
Projeto lousa interativa_ntmvr_2010Campus Party Brasil
 
Apostila 9 virtualização - nova
Apostila 9   virtualização - novaApostila 9   virtualização - nova
Apostila 9 virtualização - novaPaulo Fonseca
 
Introdução à Versão 8.0 do Supervisório InduSoft Web Studio
Introdução à Versão 8.0 do Supervisório InduSoft Web StudioIntrodução à Versão 8.0 do Supervisório InduSoft Web Studio
Introdução à Versão 8.0 do Supervisório InduSoft Web StudioAVEVA
 
Animation com Xamarin.Forms e Custom Renderers
Animation com Xamarin.Forms e Custom RenderersAnimation com Xamarin.Forms e Custom Renderers
Animation com Xamarin.Forms e Custom Renderersakamud
 
Cad engenharia de produção- apostila
Cad   engenharia de produção- apostilaCad   engenharia de produção- apostila
Cad engenharia de produção- apostilaCleide Soares
 
Cad engenharia de produção- apostila
Cad   engenharia de produção- apostilaCad   engenharia de produção- apostila
Cad engenharia de produção- apostilaAline Kracik
 
Cad engenharia de produção- apostila
Cad   engenharia de produção- apostilaCad   engenharia de produção- apostila
Cad engenharia de produção- apostilacristiano fialho
 
Palestra lousa interativa_com_software_livre_sergio_gracas
Palestra lousa interativa_com_software_livre_sergio_gracasPalestra lousa interativa_com_software_livre_sergio_gracas
Palestra lousa interativa_com_software_livre_sergio_gracasCampus Party Brasil
 
Dojo iOS Básico - Aula 3
Dojo iOS Básico - Aula 3Dojo iOS Básico - Aula 3
Dojo iOS Básico - Aula 3Gustavo Barbosa
 
Web Rangers e Power APIs
Web Rangers e Power APIsWeb Rangers e Power APIs
Web Rangers e Power APIsEliezer Bernart
 
Tutorial - Cloud Computing Primeiros Acessos Windows
Tutorial - Cloud Computing Primeiros Acessos WindowsTutorial - Cloud Computing Primeiros Acessos Windows
Tutorial - Cloud Computing Primeiros Acessos WindowsTecla Internet
 
Graphics Capabilities of Java Platform
Graphics Capabilities of Java PlatformGraphics Capabilities of Java Platform
Graphics Capabilities of Java PlatformMichel Alves
 
Front Controller & Presentation-Abstract-contrll
Front Controller & Presentation-Abstract-contrllFront Controller & Presentation-Abstract-contrll
Front Controller & Presentation-Abstract-contrllMárcio Habigzang Brufatto
 
Curso de J2ME - Parte 03 - Desenvolvimento de aplicações
Curso de J2ME - Parte 03 - Desenvolvimento de aplicaçõesCurso de J2ME - Parte 03 - Desenvolvimento de aplicações
Curso de J2ME - Parte 03 - Desenvolvimento de aplicaçõesLeonardo Melo Santos
 

Semelhante a Um Workflow Robusto para UI na Unity (20)

Cad engenharia de produção- apostila
Cad   engenharia de produção- apostilaCad   engenharia de produção- apostila
Cad engenharia de produção- apostila
 
LWUIT: Uma alternativa para interface gráfica em dispositivos móveis
LWUIT: Uma alternativa para interface gráfica em dispositivos móveisLWUIT: Uma alternativa para interface gráfica em dispositivos móveis
LWUIT: Uma alternativa para interface gráfica em dispositivos móveis
 
Java - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissionalJava - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissional
 
Projeto lousa interativa_ntmvr_2010
Projeto lousa interativa_ntmvr_2010Projeto lousa interativa_ntmvr_2010
Projeto lousa interativa_ntmvr_2010
 
2896 autocad 2006
2896 autocad 20062896 autocad 2006
2896 autocad 2006
 
Apostila 9 virtualização - nova
Apostila 9   virtualização - novaApostila 9   virtualização - nova
Apostila 9 virtualização - nova
 
Introdução à Versão 8.0 do Supervisório InduSoft Web Studio
Introdução à Versão 8.0 do Supervisório InduSoft Web StudioIntrodução à Versão 8.0 do Supervisório InduSoft Web Studio
Introdução à Versão 8.0 do Supervisório InduSoft Web Studio
 
Animation com Xamarin.Forms e Custom Renderers
Animation com Xamarin.Forms e Custom RenderersAnimation com Xamarin.Forms e Custom Renderers
Animation com Xamarin.Forms e Custom Renderers
 
Cad engenharia de produção- apostila
Cad   engenharia de produção- apostilaCad   engenharia de produção- apostila
Cad engenharia de produção- apostila
 
Cad engenharia de produção- apostila
Cad   engenharia de produção- apostilaCad   engenharia de produção- apostila
Cad engenharia de produção- apostila
 
Cad engenharia de produção- apostila
Cad   engenharia de produção- apostilaCad   engenharia de produção- apostila
Cad engenharia de produção- apostila
 
Palestra lousa interativa_com_software_livre_sergio_gracas
Palestra lousa interativa_com_software_livre_sergio_gracasPalestra lousa interativa_com_software_livre_sergio_gracas
Palestra lousa interativa_com_software_livre_sergio_gracas
 
Dojo iOS Básico - Aula 3
Dojo iOS Básico - Aula 3Dojo iOS Básico - Aula 3
Dojo iOS Básico - Aula 3
 
Web Rangers e Power APIs
Web Rangers e Power APIsWeb Rangers e Power APIs
Web Rangers e Power APIs
 
Virtualização
VirtualizaçãoVirtualização
Virtualização
 
Tutorial - Cloud Computing Primeiros Acessos Windows
Tutorial - Cloud Computing Primeiros Acessos WindowsTutorial - Cloud Computing Primeiros Acessos Windows
Tutorial - Cloud Computing Primeiros Acessos Windows
 
Apostila cad 2011 p1
Apostila cad 2011 p1Apostila cad 2011 p1
Apostila cad 2011 p1
 
Graphics Capabilities of Java Platform
Graphics Capabilities of Java PlatformGraphics Capabilities of Java Platform
Graphics Capabilities of Java Platform
 
Front Controller & Presentation-Abstract-contrll
Front Controller & Presentation-Abstract-contrllFront Controller & Presentation-Abstract-contrll
Front Controller & Presentation-Abstract-contrll
 
Curso de J2ME - Parte 03 - Desenvolvimento de aplicações
Curso de J2ME - Parte 03 - Desenvolvimento de aplicaçõesCurso de J2ME - Parte 03 - Desenvolvimento de aplicações
Curso de J2ME - Parte 03 - Desenvolvimento de aplicações
 

Um Workflow Robusto para UI na Unity

  • 1.
  • 2. Um Workflow Robusto para trabalhar com UI na Unity Até sua avó consegue fazer UI assim
  • 3. Apresentação Bruno “Tinnus” Ferreira Senior Engineer Juliano Silveira Technical Artist
  • 4.
  • 5. Como prover o melhor resultado visual possível com um workflow eficiente?
  • 6. Dando poder para os artistas!
  • 7. Montagem de UI UI/UX DESIGN TECH ART ENGINEERING C#
  • 8. Ferramentas desenvolvidas pelos engineers dão controle para a UI chegar neles muito perto da funcionalidade final
  • 9. Animators + UI na montagem garantem um workflow quase independente de código novo Animator com UI não é o jeito mais otimizado do mundo, mas já vamos chegar nisso
  • 10. Todas transições e fluxos de UI chegam no engineer funcionando
  • 11. Como garantir que todo esse workflow e toda essa UI tenham uma performance viável? Parte divertida
  • 12. Quem monta a UI precisa ter conhecimento da plataforma para garantir que tudo funciona...
  • 13. Considerando coisas como: ● Uma UI otimizada dificilmente tem uma limitação parecida com a de um cenário, não precisamos nos preocupar tanto com quantidade de triângulos por ex. ● Difícilmente você vai querer comprimir seu atlas. ● Sempre pensar no overdraw. ● Unity UI é bem CPU Costly. Isso é relativamente novo para um artista, se preocupar com UI reconstruindo e etc.
  • 14. Trabalhando dentro das limitações
  • 19.
  • 20. Cenas dos últimos capítulos... Resumo rápido do que falamos de UI nas últimas apresentações
  • 21. UI - tips and tricks
  • 22. UI - tips and tricks
  • 23. UI - Soft Mask ● Shader customizado de UI com um input de textura grayscale multiplicando no alpha. ● Essa textura recebe mapeamento em screen space com offset alimentado por um script.
  • 25. Muitos ícones? Muitas currencies? Asset Bundles!
  • 26. Entenda o calcanhar de Aquiris do seu jogo
  • 27. Entenda o calcanhar de Aquiris Aquiles do seu jogo
  • 28. Como os sistemas suportam isso?
  • 29. Aquiris UI Framework Objetivos - Empoderar o designer - Reduzir o trabalho do programador (e do designer) - Facilitar mudanças nas telas - Reduzir código repetitivo - Resolver o controle de fluxo entre telas
  • 30. Aquiris UI Framework Arquitetura - UI separada em "camadas" - Cada camada é uma máquina de estados (FSM) - Ou seja, cada camada pode estar em 1 estado por vez (ou desligada) - Uma “view” está atrelada a um ou mais estados - “view” = GameObject que representa uma hierarquia de elementos de UI - Em geral, prefabs que representam telas ou partes delas - A view está visível se e somente se algum dos seus estados está ativo - Estado visual das views é controlado por Animators - O framework apenas liga as views e seta parâmetros no Animator root da view
  • 31. Aquiris UI Framework - Arquitetura Camadas (Layers) - Identificadas por um inteiro (arbitrário) - Layer 0, Layer 1, Layer 10 etc - Noção de ordem entre camadas não é explícita - Mas pode ser utilizada pelo jogo - ex. desligar input da tela caso alguma camada superior esteja ligada - Uma camada possui uma lista de estados possíveis, ou desligada - Cada estado pertence a apenas uma camada - Representação abstrata: não existem na cena - Só o que existe na cena são as views
  • 32. Aquiris UI Framework - Arquitetura Estados - Representadas por uma string (case-insensitive) - TITLE_SCREEN, GAMEPLAY, MAP, RESULTS, OPTIONS, GAME_OVER etc - Cada estado faz parte de uma camada - Atrelados implicitamente a uma lista de views - Quando o estado é selecionado na camada, suas views são ativadas - Quando outro estado é selecionado na camada, suas views são desativadas - Representação abstrata: não existem na cena - Só o que existe na cena são as views
  • 33. Aquiris UI Framework - Arquitetura Views - Representadas por uma hierarquia de GameObjects na cena - Cada view pode estar atrelada a vários estados - Visibilidade da view é controlada pelo sistema + Animator - Sistema liga a view -> Sistema chama trigger de entrada - Sistema chama trigger de saída -> sistema desliga a view - Configuradas com um script (ViewConfiguration)
  • 34. Aquiris UI Framework - Configuração de views Intro Delay / Outro Delay - Delay para chamar o Animator Exit State - Estado do Animator para desligar a tela Transition Triggers - Triggers de in/out no Animator - Inclui transição interna Show on State List - Em quais estados mostrar a view?
  • 35. Aquiris UI Framework - Ferramentas Debug Menu - Invocado com uma hotkey, permite mudar entre estados diretamente para testes de fluxo e acelerar o desenvolvimento
  • 36. Aquiris UI Framework - Ferramentas Scripts auxiliares - ChangeStateComponent - DisableLayerComponent - StateFlowComponent - PointerEventDispatcher/Listener - ToggleEventDispatcher/Listener
  • 37. Aquiris UI Framework - Código Como o sistema se apresenta para o código? - Fluxo controlado por um singleton: UIManager - Chamadas de controle de fluxo - ChangeState(string stateName) - DisableLayer(int layerIndex) - Callbacks - OnBeforeViewStateChange - OnAfterViewStateChange
  • 38. Como integrar os dados nas telas?
  • 39. Integração de Dados: MVC com referências diretas Vantagens - Suportado nativamente pelo framework - Controller instanciado automaticamente - Simples de entender e usar - Boa performance e uso de memória Desvantagens - Referências diretas a componentes dificultam mudanças - Gera código repetitivo - Problemático para casos mais complexos
  • 41. Integração de Dados: MVVM Vantagens - Referências indiretas reduzem acoplamento e facilitam mudanças - Reduz código repetitivo - Menos código em casos complexos Desvantagens - Uso pesado de reflection - Menos compatibilidade - Menos performance - Maior uso de memória - Mais complexo de entender e usar
  • 42.
  • 43. Referências Squeezing Unity: Tips for raising performance Let's Talk Content Optimization