Exercício - Painel de botões e menus dinâmicos
Existem várias formas de fornecer inputs. As entradas acionam determinados eventos e executam algumas alterações. Os componentes da interface do usuário ajudam os usuários a interagir com os hologramas em cena.
Criar um painel estático de botões
Na janela Hierarquia, clique com o botão direito do mouse no objeto RoverExplorer e selecione Criar vazio para adicionar um objeto vazio como filho do RoverExplorer. Nomeie o objeto Botões e configure o componente Transformar da seguinte maneira:
- Posição: X = -0,6, Y = 0,036, Z = -0,5
- Rotação: X = 90, Y = 0, Z = 0
- Escala: X = 1, Y = 1, Z = 1
Na janela Projeto, navegue até o MRTK de Ativos>. Tutorials.GettingStarted pasta pré-fabricada, clique e arraste o pré-fabricado PressableCylinderButton para o objeto Buttons, em seguida, clique com o botão direito do mouse no PressableCylinderButton e selecione Duplicar para criar uma cópia, repita até ter um total de três objetos PressableCylinderButton em Botões:>
Uma janela solicitará que você importe o TextMesh Pro. Selecione a primeira opção para 'Importar TMP Essentials'.
No painel Hierarquia, selecione o objeto Botões e, em seguida, no painel Inspetor, selecione Adicionar Componente para adicionar o componente Barra de Objetos. Configure-o da seguinte forma:
- Direção do fluxo da barra de objetos: Horizontal
- Espaçamento entre: x = 0,2, y = 0
Atribua cada objeto em Botões à lista Objetos da Barra de Objetos no componente Barra de Objetos:
No painel Hierarquia, nomeie os botões como Dicas, Explodir e Redefinir. Para cada botão, altere a propriedade SpeechRecognitionKeyword em Advanced StatefulInteractable Settings no componente Pressable Button para corresponder aos nomes dos botões::
No painel Hierarquia, selecione o objeto do botão Dicas e, na janela Inspetor, configure o evento PressableButton.OnClicked () da seguinte maneira:
- Atribuir o objeto RoverAssembly ao campo Nenhum (Objeto)
- Na lista suspensa Sem função, selecione PlacementHintsController>TogglePlacementHints () para definir essa função como a ação a ser executada quando o evento for acionado
No painel Hierarquia, selecione o objeto do botão Explodir e, em seguida, na janela Inspetor, configure o evento PressableButton.OnClicked () da seguinte maneira:
- Atribuir o objeto RoverAssembly ao campo Nenhum (Objeto)
- Na lista suspensa Sem função, selecione ExplodedViewController>ToggleExplodedView() para definir essa função como a ação a ser executada quando o evento for acionado
Pressione o botão Reproduzir para entrar no modo de jogo. Pressione e segure a barra de espaço para ativar a mão e use o mouse para pressionar o botão Dicas para alternar a visibilidade dos objetos de dica de posicionamento:
O botão Explodir ativará e desativará a visualização explodida:
Implementaremos o botão Reset mais tarde no módulo.
Criar um menu dinâmico que segue o usuário
No painel Projeto, navegue até a pasta Packages>MRTK UX Components>Near Menu, clique e arraste o pré-fabricado NearMenuBase para a janela Hierarquia, defina sua Posição de transformação como X = 0, Y = -0,4, Z = 0 e configure-o da seguinte maneira:
- Verifique se o Tipo de destino rastreado do componente SolverHandler está definido como Head
- Marque a caixa de seleção ao lado do componente RadialView Solver para que ele seja ativado por padrão
Na janela Hierarquia, renomeie o objeto para Menu e expanda seu objeto filho MenuContent-HorizontalLayout (Menu e Pin) Buttons-GridLayout (Buttons)> para revelar os três botões:
Renomeie o primeiro botão em Buttons-GridLayout (Botões) para Indicador e, em seguida, na janela Hierarquia, configure o objeto de jogo Indicador da seguinte maneira:
- Selecione o objeto Frontplate AnimatedContent Icon Label e altere o componente TextMesh Pro para corresponder ao nome do botão.>>> Verifique se o objeto Label está ativado na hierarquia
- Configure o evento PressableButton.OnClicked() atribuindo o objeto Indicator que se parece com uma divisa ao campo Nenhum (Objeto) e selecionando GameObject > SetActive (bool) na lista suspensa Sem Função (verifique se a caixa de seleção do argumento está marcada)
- Selecione o objeto Frontplate > AnimatedContent > Icon UIButtonFontIcon> e altere o ícone para o ícone de pesquisa no componente Seletor de ícone de fonte. Você pode encontrar isso na lista de ícones, ou definir Nome do ícone atual como 'Ícone 130'
Para desativar o objeto Indicador de divisa, no painel Hierarquia, selecione o objeto Indicador que se parece com uma divisa e, em seguida, no painel Inspetor:
- Desmarque a caixa de seleção ao lado do nome para torná-la inativa por padrão
- Use o botão Adicionar componente para adicionar o componente Controlador de indicador direcional (script)
Renomeie o segundo botão para TapToPlace e, em seguida, na janela Hierarquia, configure o objeto de jogo TapToPlace da seguinte maneira:
- Selecione o objeto Frontplate AnimatedContent Icon Label e altere o componente TextMesh Pro para corresponder ao nome do botão.>>> Verifique se o objeto Label está ativado na hierarquia
- Configure o evento PressableButton.OnClicked() atribuindo o objeto RoverExplorer >RoverAssembly ao campo Nenhum (Objeto) e selecionando TapToPlace>bool Enabled na lista suspensa Sem Função (verifique se a caixa de seleção do argumento está marcada)
- Selecione o objeto Frontplate > AnimatedContent > Icon UIButtonFontIcon> e altere o ícone para o ícone de mão no componente Seletor de ícone de fonte. Você pode encontrar isso na lista de ícones, ou definir Nome do ícone atual como 'Ícone 13'
Na janela Hierarquia, selecione o objeto RoverAssembly e, em seguida, na janela Inspetor, configure o componente Tocar para Colocar (Script) da seguinte maneira:
- Desmarque a caixa de seleção ao lado de seu nome para torná-la inativa por padrão
- Na seção Ao colocar o evento interrompido (), selecione o ícone + para adicionar um novo evento:
- Atribuir o objeto RoverExplorer>RoverAssembly ao campo Nenhum (Objeto)
- Na lista suspensa Sem função, selecione TapToPlace>bool Enabled para atualizar esse valor de propriedade quando o evento for acionado
- Verifique se a caixa de seleção argumento está desmarcada