Elemento Interativo [Experimental]

Um ponto de entrada centralizado simplificado para o sistema de entrada MRTK. Contém métodos de gestão do estado, gestão de eventos e a lógica de definição do estado para estados de interação core.

Interactive Element é uma funcionalidade experimental suportada na Unidade 2019.3 e até à medida que utiliza uma capacidade nova para a Unidade 2019.3: Serialize Reference.

Inspetor de Elementos Interativos

Durante o modo de reprodução, o inspetor do Elemento Interativo fornece feedback visual que indica se o estado atual está ou não ativo. Se um estado estiver ativo, será realçado com uma cor ciano. Se o estado não estiver ativo, a cor não é alterada. Os números junto dos estados do inspetor são os valores do Estado, se o Estado estiver ativo então o valor é 1, se o Estado não estiver ativo o valor é 0.

Elemento interativo com interação de mão virtual

Estados-núcleos

O Elemento Interativo contém estados centrais e suporta a adição de estados personalizados. Um estado central é aquele que já tem a lógica de definição de estado definida em BaseInteractiveElement . Segue-se uma lista dos atuais estados centrais orientados pela entrada:

Estados-núcleos atuais

Estados centrais de interação próxima e distante:

Estados centrais de interação próximas:

Estados centrais de interação distante:

Outros Estados-Núcleo:

Como adicionar um Estado Central através do Inspetor

  1. Navegue para adicionar o Estado Central no inspetor para elemento interativo.

    Adicione um Estado Central via Inspetor

  2. Selecione o botão 'Selecione's para escolher o estado principal a adicionar. Os estados do menu são classificados pelo tipo de interação.

    Adicione um Estado Central via Inspetor com o estado selecionado

  3. Abra o desdobrável de configuração do evento para ver os eventos e propriedades associados ao estado.

    Adicione um Estado Central via Inspetor com configuração de evento

Como adicionar um Estado Central via Script

Use o AddNewState(stateName) método para adicionar um estado central. Para uma lista dos nomes principais disponíveis, use o CoreInteractionState enum.

// Add by name or add by CoreInteractionState enum to string

interactiveElement.AddNewState("SelectFar");

interactiveElement.AddNewState(CoreInteractionState.SelectFar.ToString());

Estrutura Interna dos Estados

Os estados em Elemento Interativo são do InteractionState tipo. Um InteractionState contém as seguintes propriedades:

  • Nome:O nome do Estado.
  • Valor: O valor do Estado. Se o Estado estiver ligado, o valor do Estado é 1. Se o Estado está fora, o valor do Estado é 0.
  • Ativo: Se o estado está ou não ativo. O valor para a propriedade Ative é verdadeiro quando o estado está ligado, falso se o estado está fora.
  • Tipo de interação: O tipo de interação de um estado é o tipo de interação a que um estado se destina.
    • None: Não suporta qualquer forma de interação de entrada.
    • Near: Apoio de interação próxima. A entrada é considerada quase interação quando uma mão articulada tem contacto direto com outro objeto do jogo, ou seja, a posição que a mão articulada está perto da posição do objeto do jogo no espaço mundial.
    • Far: Apoio de interação distante. A entrada é considerada uma interação distante quando não é necessário o contacto direto com o objeto do jogo. Por exemplo, a entrada através do raio do controlador ou do olhar é considerada entrada de interação distante.
    • NearAndFar: Engloba o suporte de interação próximo e distante.
    • Other: Suporte de interação independente de ponteiro.
  • Configuração do evento: A configuração do evento para um estado é o ponto de entrada do perfil de eventos serializados.

Todas estas propriedades são definidas internamente no State Manager contido em Elemento Interativo. Para modificação dos Estados, utilize os seguintes métodos de ajuda:

Métodos de ajuda de definição de estado

// Get the InteractionState
interactiveElement.GetState("StateName");

// Set a state value to 1/on
interactiveElement.SetStateOn("StateName");

// Set a state value to 0/off
interactiveElement.SetStateOff("StateName");

// Check if a state is present in the state list
interactiveElement.IsStatePresent("StateName");

// Check whether or not a state is active
interactiveElement.IsStateActive("StateName");

// Add a new state to the state list
interactiveElement.AddNewState("StateName");

// Remove a state from the state list
interactiveElement.RemoveState("StateName");

Obter a configuração do evento de um estado é específico do próprio estado. Cada estado central tem um tipo específico de configuração de evento que é descrito abaixo sob as secções que descrevem cada estado central.

Aqui está um exemplo generalizado de obter a configuração de um evento de estado:

// T varies depending on the core state - the specific T's are specified under each of the core state sections
T stateNameEvents = interactiveElement.GetStateEvents<T>("StateName");

Estado padrão

O estado padrão está sempre presente num Elemento Interativo. Este estado só estará ativo quando todos os outros Estados não estiverem ativos. Se algum outro estado ficar ativo, o estado padrão será definido internamente.

Um Elemento Interativo é inicializado com os estados de Padrão e Foco presentes na lista de estado. O estado padrão tem sempre de estar presente na lista do Estado.

Obtenção de eventos estatais predefinidos

Tipo de configuração de evento para o Estado Predefinido: StateEvents

StateEvents defaultEvents = interactiveElement.GetStateEvents<StateEvents>("Default");

defaultEvents.OnStateOn.AddListener(() =>
{
    Debug.Log($"{gameObject.name} Default State On");
});

defaultEvents.OnStateOff.AddListener(() =>
{
    Debug.Log($"{gameObject.name} Default State Off");
});

Estado de Foco

O estado de Foco é um estado de interação próximo e distante que pode ser considerado como o equivalente à realidade mista. O fator diferenciador entre a interação próxima e distante para o estado de Foco é o tipo de ponteiro ativo atual. Se o tipo de ponteiro para o estado de Foco for o Pontiadilho de Poke, então a interação é considerada quase interação. Se o ponteiro primário não for o Pontiadilho de Poke, então a interação é considerada uma interação distante. O estado Focus está presente em Elemento Interativo por padrão.

Foco Estadode foco Estado com interação de mão virtual

Focus State InspetorFocus estado no Inpsector

Obtenção de eventos do Estado de foco

Tipo de configuração de evento para o Estado de foco: FocusEvents

FocusEvents focusEvents = interactiveElement.GetStateEvents<FocusEvents>("Focus");

focusEvents.OnFocusOn.AddListener((pointerEventData) =>
{
    Debug.Log($"{gameObject.name} Focus On");
});

focusEvents.OnFocusOff.AddListener((pointerEventData) =>
{
    Debug.Log($"{gameObject.name} Focus Off");
});

Foco Perto vs Focus Far Behavior

Foco perto e longe com interação de mão virtual

Foco perto do estado

O estado Focus Near é definido quando um evento de foco é levantado e o ponteiro primário é o ponteiro Poke, uma indicação de quase interação.

Foco perto do estado focoperto do estado cominteração de mão virtual

Foco Perto inspetor do EstadoFoco perto de componente noInspetor

Obtenção de Eventos do Estado De FocoNear

Tipo de configuração de eventos para o Estado FocusNear: FocusEvents

FocusEvents focusNearEvents = interactiveElement.GetStateEvents<FocusEvents>("FocusNear");

focusNearEvents.OnFocusOn.AddListener((pointerEventData) =>
{
    Debug.Log($"{gameObject.name} Near Interaction Focus On");
});

focusNearEvents.OnFocusOff.AddListener((pointerEventData) =>
{
    Debug.Log($"{gameObject.name} Near Interaction Focus Off");
});

Foco Estado Distante

O estado Focus Far é definido quando o ponteiro principal não é o ponteiro Poke. Por exemplo, o ponteiro de raios controlador predefinido e o ponteiro GGV (Gaze, Gesto, Voz) são considerados ponteiros de interação distante.

Foco Far State BehaviorFocus estado longe com interação de mão virtual

Focus Far State InspetorFocus componente distante no Inspetor

Obter eventos de foco far state

Tipo de configuração de evento para o Estado FocusFar: FocusEvents

FocusEvents focusFarEvents = interactiveElement.GetStateEvents<FocusEvents>("FocusFar");

focusFarEvents.OnFocusOn.AddListener((pointerEventData) =>
{
    Debug.Log($"{gameObject.name} Far Interaction Focus On");
});

focusFarEvents.OnFocusOff.AddListener((pointerEventData) =>
{
    Debug.Log($"{gameObject.name} Far Interaction Focus Off");
});

Estado de Toque

O estado de Toque é um estado de interação próximo que é definido quando uma mão articulada toca diretamente no objeto. Um toque direto significa que o dedo indicador da mão articulada está muito perto da posição mundial do objeto. Por predefinição, NearInteractionTouchableVolume um componente é anexado ao objeto se o estado touch for adicionado à lista de estado. A presença de um NearInteractionTouchableVolume ou componente é necessária para detetar NearInteractionTouchable eventos Touch. A diferença entre NearInteractionTouchableVolume e NearInteractionTouchable é que NearInteractionTouchableVolume deteta um toque baseado no colisor do objeto e deteta o NearInteractionTouchable toque dentro de uma área definida de um plano.

Estado de toque estadotoque estado com interação de mão virtual

Touch State InspetorTouch componente do estado no Inspetor

Obtenção de eventos do Estado do toque

Tipo de configuração de evento para o Estado do Toque: TouchEvents

TouchEvents touchEvents = interactiveElement.GetStateEvents<TouchEvents>("Touch");

touchEvents.OnTouchStarted.AddListener((touchData) =>
{
    Debug.Log($"{gameObject.name} Touch Started");
});

touchEvents.OnTouchCompleted.AddListener((touchData) =>
{
    Debug.Log($"{gameObject.name} Touch Completed");
});

touchEvents.OnTouchUpdated.AddListener((touchData) =>
{
    Debug.Log($"{gameObject.name} Touch Updated");
});

Selecione Estado Far

O estado Select Far é a IMixedRealityPointerHandler superfície. Este estado é um estado de interação distante que deteta um clique de interação distante (air-tap) e mantém através da utilização de ponteiros de interação distante, tais como o ponteiro de raios controlador predefinido ou o ponteiro GGV. O estado Select Far tem uma opção sob o nome de configuração do evento Global . Se Global for verdade, então IMixedRealityPointerHandler o é registado como um manipulador global de entradas. O foco num objeto não é necessário para desencadear eventos do sistema de entrada se um manipulador estiver registado como global. Por exemplo, se um utilizador quiser saber sempre que o gesto de toque/seleção é realizado independentemente do objeto em foco, definido Global como verdadeiro.

Selecione O comportamento do Estado DistanteSelecione longe com interação de mão virtual

Selecione Inspetor do Estado DistanteSelecione componente distante no Inspetor

Obtenção de eventos de estado distante selecionados

Tipo de configuração de evento para o Estado SelectFar: SelectFarEvents

SelectFarEvents selectFarEvents = interactiveElement.GetStateEvents<SelectFarEvents>("SelectFar");

selectFarEvents.OnSelectUp.AddListener((pointerEventData) =>
{
    Debug.Log($"{gameObject.name} Far Interaction Pointer Up");
});

selectFarEvents.OnSelectDown.AddListener((pointerEventData) =>
{
    Debug.Log($"{gameObject.name} Far Interaction Pointer Down");
});

selectFarEvents.OnSelectHold.AddListener((pointerEventData) =>
{
    Debug.Log($"{gameObject.name} Far Interaction Pointer Hold");
});

selectFarEvents.OnSelectClicked.AddListener((pointerEventData) =>
{
    Debug.Log($"{gameObject.name} Far Interaction Pointer Clicked");
});

Estado clicado

O estado Clicked é desencadeado por um clique de interação distante (Select Far state) por padrão. Este estado é ligado internamente, invoca o evento OnClicked e, em seguida, é imediatamente desligado.

Nota

O feedback visual no inspetor baseado na atividade do Estado não está presente para o estado Clicked porque é ligado e desligado imediatamente.

Comportamento do estadoclicado estado clicado com interações de mão virtual

Inspetor de Estado clicadoClique componente de estado no Inspetor

Exemplo de estado perto e distante clicado
O estado clicado pode ser acionado através de pontos de entrada adicionais utilizando o interactiveElement.TriggerClickedState() método. Por exemplo, se um utilizador quiser um toque de interação próximo para desencadear um clique num objeto também, então adicionaria o TriggerClickedState() método como ouvinte no estado de toque.

Estado próximo e distante com interações virtuais da mão

Obtenção de eventos estatais clicados

Tipo de configuração de evento para o Estado Clicado: ClickedEvents

ClickedEvents clickedEvent = interactiveElement.GetStateEvents<ClickedEvents>("Clicked");

clickedEvent.OnClicked.AddListener(() =>
{
    Debug.Log($"{gameObject.name} Clicked");
});

Toggle On and Toggle Off estado

Os estados de Toggle On e Toggle Off são um par e ambos precisam estar presentes para o comportamento de alternar. Por predefinição, os estados Toggle On e Toggle Off são desencadeados através de um clique de interação distante (Selecione Far state). Por predefinição, o estado Toggle Off está ativo no início, o que significa que o toggle será inicializado para desligar. Se um utilizador quiser que o estado Toggle On esteja ativo no início, então no estado toggle on definido IsSelectedOnStart para verdadeiro.

ToggleOn e Toggle Off Comportamento do EstadoAlternar dentro e fora com interações virtuais da mão

ToggleOn e Toggle Off InspetorToggle componente no Inspetor Inspetor

Exemplo de Estados próximos e distantes
Semelhante ao estado clicked, a definição de estado de alternação pode ter vários pontos de entrada usando o interactiveElement.SetToggleStates() método. Por exemplo, se um utilizador quiser tocar como um ponto de entrada adicional para definir os estados de toggle, então eles adicionam o SetToggleStates() método a um dos eventos no estado Touch.

Perto e longe alternar com interações virtuais da mão

Obter Toggle On e Toggle Off Eventos estatais

Tipo de configuração de evento para o Estado de ToggleOn: ToggleOnEvents
Tipo de configuração de evento para o Estado toggleoff: ToggleOffEvents

// Toggle On Events
ToggleOnEvents toggleOnEvent = interactiveElement.GetStateEvents<ToggleOnEvents>("ToggleOn");

toggleOnEvent.OnToggleOn.AddListener(() =>
{
    Debug.Log($"{gameObject.name} Toggled On");
});

// Toggle Off Events
ToggleOffEvents toggleOffEvent = interactiveElement.GetStateEvents<ToggleOffEvents>("ToggleOff");

toggleOffEvent.OnToggleOff.AddListener(() =>
{
    Debug.Log($"{gameObject.name} Toggled Off");
});

Estado da palavra-chave da fala

O estado de palavra-chave da palavra-voz ouve as palavras-chave definidas no Perfil de Discurso de Realidade Mista. Qualquer nova palavra-chave DEVE ser registada no perfil de comando da fala antes do tempo de execução (passos abaixo).

Palavra-chave do discurso do estado dapalavra-chave do estado da palavra-chave com interação virtual

Componente de palavra-chave do estado de palavra-chavedo estadode palavra-chave no inspetor

Nota

O estado da palavra-chave da fala foi desencadeado em editor, pressionando a chave F5 no gif acima. A configuração nos testes de editor para a fala é delineada os passos abaixo.

Como registar um Comando de Fala/Palavra-Chave

  1. Selecione o objeto de jogo MixedRealityToolkit

  2. Selecione Copiar e personalize o perfil atual

  3. Navegue na secção Entrada e selecione Clone para permitir a modificação do perfil de Entrada

  4. Percorra a secção De Discurso no perfil de Entrada e clone o Perfil de Discurso

    Perfil de palavra-chave de discurso no objeto de jogo MRTK

  5. Selecione Adicionar um novo comando de fala

    Adicionar uma nova palavra-chave de discurso no perfil MRTK

  6. Introduza a nova palavra-chave. Opcional: Altere o KeyCode para F5 (ou outro KeyCode) para permitir testes no editor.

    Configurar a palavra-chave da fala no perfil MRTK

  7. Volte para o inspetor de estado de palavra-chave de discurso de elemento interativo e selecione Add Keyword

    Adicionar palavra-chave ao componente de elemento interativo

    Validação e registo de palavras-chave

  8. Introduza a nova palavra-chave que acabou de ser registada no Perfil de Discurso

    Introduzindo nova palavra-chave do discurso

Para testar o estado de palavra-chave da fala no editor, prima o KeyCode que foi definido no passo 6 (F5) para simular o evento de palavras-chave de fala reconhecida.

Obtenção de eventos de estado de palavra-chave de palavra de discurso

Tipo de configuração de evento para o Estado do Palavra de Ordem do Discurso: SpeechKeywordEvents

SpeechKeywordEvents speechKeywordEvents = interactiveElement.GetStateEvents<SpeechKeywordEvents>("SpeechKeyword");

speechKeywordEvents.OnAnySpeechKeywordRecognized.AddListener((speechEventData) =>
{
    Debug.Log($"{speechEventData.Command.Keyword} recognized");
});

// Get the "Change" Keyword event specifically
KeywordEvent keywordEvent = speechKeywordEvents.Keywords.Find((keyword) => keyword.Keyword == "Change");

keywordEvent.OnKeywordRecognized.AddListener(() =>
{ 
    Debug.Log("Change Keyword Recognized"); 
});

Estados personalizados

Como criar um Estado Personalizado através de Inspetor

O estado personalizado criado através de inspetor será inicializado com a configuração padrão do evento do estado. A configuração padrão do evento para um estado personalizado é de tipo StateEvents e contém os eventos OnStateOn e OnStateOff.

  1. Navegue para criar estado personalizado no inspetor para elemento interativo.

    Criação de um estado personalizado

  2. Insira o nome do novo estado. Este nome deve ser único e não pode ser o mesmo que os estados centrais existentes.

    Inserindo o nome de um novo estado personalizado

  3. Selecione Definir Nome de Estado para adicionar à lista de estado.

    Adicionar estado personalizado à lista de estado

    Este estado personalizado é inicializado com a configuração padrão do StateEvents evento que contém o e os OnStateOnOnStateOff eventos. Para criar uma configuração personalizada de evento para um estado novo veja: Criar um Estado Personalizado com uma Configuração de Evento Personalizado.

    Estado novo mostrado na componente de elemento interativo

Como criar um estado personalizado via script

interactiveElement.AddNewState("MyNewState");

// A new state by default is initialized with a the default StateEvents configuration which contains the 
// OnStateOn and OnStateOff events

StateEvents myNewStateEvents = interactiveElement.GetStateEvents<StateEvents>("MyNewState");

myNewStateEvents.OnStateOn.AddListener(() =>
{
    Debug.Log($"MyNewState is On");
});

Criar um Estado Personalizado com uma Configuração personalizada de eventos

Os ficheiros de exemplo para um estado personalizado chamado Teclado estão localizados aqui: MRTK\SDK\Experimental\InteractiveElement\Exemplos\Scripts\CustomStateExample

Os passos seguintes passam por um exemplo existente de criação de uma configuração personalizada de eventos estatais e ficheiros recetores.

  1. Pense num nome de estado. Este nome deve ser único e não pode ser o mesmo que os estados centrais existentes. Para efeitos deste exemplo, o nome do estado será Teclado.

  2. Crie dois ficheiros .cs denominados nomes de estado + "Recetor" e nome estatal + "Eventos". A designação destes ficheiros é tomada em consideração internamente e deve seguir o nome estatal + Convenção de Evento/Recetor.

    Scripts de estado de teclado

  3. Consulte os ficheiros TecladoEvents.cs e KeyboardReceiver.cs para obter mais detalhes sobre o conteúdo do ficheiro. As novas aulas de configuração de eventos devem herdar BaseInteractionEventConfiguration e as novas classes recetores de eventos devem herdar de BaseEventReceiver . Exemplos sobre a definição de estado para o estado do teclado estão localizados no CustomStateSettingExample.cs ficheiro.

  4. Adicione o estado ao Elemento Interativo utilizando o nome do estado, o nome do estado será reconhecido se a configuração do evento e os ficheiros recetores de eventos existirem. As propriedades no ficheiro de configuração de eventos personalizados devem aparecer no inspetor.

    Adicionar estado personalizado ao elemento interativoEstado personalizado reconhecido no elementointerativo

  5. Para mais exemplos de configuração de eventos e ficheiros recetores de eventos consulte os ficheiros nestes caminhos:

  • MRTK\SDK\Experimental\InteractiveElement\InteractiveElement\Events\EventConfigurations
  • MRTK\SDK\Experimental\InteractiveElement\InteractiveElement\Events\EventReceivers

Cena de exemplo

A cena de exemplo para Elemento Interativo + Visualizer de Estado está localizada aqui: MRTK\SDK\Experimental\InteractiveElement\Exemplos\InteractiveElementExampleScene.unitity

Cena de exemplo com elemento interativo e visualizador de estado

Botão compressível

A cena do exemplo contém pré-fabricados nomeados CompressableButtonCompressableButtonToggle e, estes pré-fabricados espelham o comportamento dos PressableButtonHoloLens2 botões, que são construídos usando o Elemento Interativo e o Visualizador do Estado. O CompressableButton componente é atualmente uma combinação PressableButton + PressableButtonHoloLens2 de com uma BaseInteractiveElement classe base.

Visualizador estatal [Experimental]

O componente State Visualizer adiciona animações a um objeto baseado nos estados definidos num componente de Elemento Interativo ligado. Este componente cria ativos de animação, coloca-os na pasta MixedRealityToolkit.Gerada e permite a configuração simplificada do quadro de chaves de animação através da adição de propriedades Animatable a um objeto de jogo alvo. Para permitir transições de animação entre estados, é criado um ativo do Controlador de Animadores e uma máquina de estado padrão é gerada com parâmetros associados e quaisquer transições de estado. A máquina do estado pode ser vista na janela do Animador da Unidade.

Sistema de Animação de Visualizer e Unidade do Estado

O Visualizer Estatal aproveita atualmente o Sistema de Animação de Unidade.

Quando o botão Generate New Animation Clips no State Visualizer é premido, novos ativos de clipe de animação são gerados com base nos nomes do estado em Elemento Interativo e são colocados na pasta MixedRealityToolkit.Generated. A propriedade Animation Clip em cada recipiente de estado é definida para o clipe de animação associado.

Clips de animação na componente de visualizador do estado

Uma Máquina estatal de animação também é gerada para gerir transições suaves entre clips de animação. Por predefinição, a máquina estatal utiliza o Estado Qualquer para permitir transições entre qualquer estado em Elemento Interativo.

Os visualizadores estatais desencadeados no animador também são gerados para cada estado, os parâmetros do gatilho são usados no Visualizador do Estado para desencadear uma animação.

Máquina de estado de unidade

Limitações do Tempo de Execução

O Visualizador Estatal deve ser adicionado a um objeto através do Inspetor e não pode ser adicionado através do script. As propriedades que modificam o AnimatorStateMachine/AnimationController estão contidas num espaço de nome de editor ( UnityEditor.Animations ) que são removidas quando a aplicação é construída.

Como usar o Visualizer Estatal

  1. Criar um Cubo

  2. Anexar Elemento Interativo

  3. Anexar visualizador de estado

  4. Selecione Gerar novos clips de animação

    Gerando novos clips de animação

    Mostrando clips de animação gerados em componentes de visualizador e elementos interativos

  5. No recipiente estado Focus, selecione Adicionar Alvo

    Adicionar o alvo do visualizador do estado

  6. Arraste o objeto de jogo atual para o campo alvo

    Definição do alvo do visualizador do estado

  7. Abra o foldout do Cube Animatable Properties

  8. Selecione o menu de entrega de propriedade Animatable e selecione Color

    Definição da cor do visualizador do estado

  9. Selecione Adicionar a Propriedade Animatária Cor

    Selecionando a propriedade animatável de cor visualizadora

  10. Escolha uma cor

    Escolher uma cor de visualizador da roda de cor

  11. Pressione o jogo e observe a mudança de cor transitória

    Exemplo de mudança de cor transitória com interação de mão virtual

Propriedades Animatáveis

O objetivo principal das Propriedades Animatable é simplificar a definição do quadro de clipes de animação. Se um utilizador estiver familiarizado com o Sistema de Animação Unidade e preferir definir diretamente os quadros-chave nos clips de animação gerados, então eles simplesmente não podem adicionar propriedades Animatable a um objeto alvo e abrir o clip na janela de animação da Unidade (Windows >> Animação de Animação).

Se utilizar as propriedades Animatable para animação, o tipo de curva está definido para EaseInOut.

Propriedades animatáveis atuais:

Compensação de escala

A propriedade Animatable Scale Offset pega na escala atual do objeto e adiciona o offset definido.

Offset de escala com interação de mão virtual

Compensação de posição

A posição Offset Animatable tem a posição atual do objeto e adiciona o offset definido.

Offset de posição com interação de mão virtual

Cor

A propriedade Color Animatable representa a cor principal de um material se o material tiver uma propriedade de cor principal. Esta propriedade anima a material._Color propriedade.

Alterar a cor do foco com a interação virtual da mão

Cor shader

A propriedade Shader Color Animatable refere-se a uma propriedade shader de cor tipo. Um nome de propriedade é necessário para todas as propriedades shader. O gif abaixo demonstra animar uma propriedade de cor shader chamada Fill_Color que não é a cor principal do material. Observe os valores de mudança no inspetor de materiais.

Cor de sombra com interação de mão virtual

Flutuador shader

A propriedade Shader Float Animatable refere-se a uma propriedade shader do tipo float. Um nome de propriedade é necessário para todas as propriedades shader. No gif abaixo, observe os valores de alteração no inspetor de materiais para a propriedade metálica.

Flutuador de sombra com interação de mão virtual

Vetor shader

A propriedade animatária do vetor Shader refere-se a uma propriedade shader do tipo Vetor4. Um nome de propriedade é necessário para todas as propriedades shader. No gif abaixo, observe os valores de alteração no inspetor de materiais para a propriedade Tiling (Main Tex_ST).

Vetor shader com interação de mão virtual

Como encontrar nomes de propriedade animatable Shader

  1. Navegue para > animação de > janela

  2. Certifique-se de que o objeto com o Visualizador do Estado é selecionado na hierarquia

  3. Selecione qualquer clip de animação na janela animação

  4. Selecione Add Property, abra a pasta renderizador de malha

    Adicionar propriedade de animação na janela do Animador

  5. Esta lista contém os nomes de todos os nomes de propriedade animatável

    Propriedades de animação de renderizador de malha na janela do Animador

Ver também