Elemento Interativo [Experimental]

Um ponto de entrada centralizado simplificado para o sistema de entrada MRTK. Contém métodos de gerenciamento de estado, gerenciamento de eventos e a lógica de configuração de estado para estados de interação principais.

O Elemento Interativo é um recurso experimental com suporte no Unity 2019.3 e para cima, pois utiliza uma funcionalidade nova no Unity 2019.3: Serialize Reference.

Inspetor de Elemento Interativo

Durante o modo de reprodução, o Inspetor de Elementos Interativos fornece comentários visuais que indicam se o estado atual está ativo ou não. Se um estado estiver ativo, ele será realçado com uma cor de ciano. Se o estado não estiver ativo, a cor não será alterada. Os números ao lado dos estados no inspetor são os valores de estado, se o estado estiver ativo, o valor será 1, se o estado não estiver ativo, o valor será 0.

Interactive Element with virtual hand interaction

Estados principais

O Elemento Interativo contém estados principais e dá suporte à adição de estados personalizados. Um estado principal é aquele que já tem a lógica de configuração de estado definida em BaseInteractiveElement. Veja a seguir uma lista dos estados principais atuais controlados por entrada:

Estados principais atuais

Estados principais de interação próximos e distantes:

Estados principais de interação próxima:

Estados principais de interação distante:

Outros estados principais:

Como adicionar um estado principal por meio do Inspetor

  1. Navegue até Adicionar Estado Principal no inspetor do Elemento Interativo.

    Add a Core State via Inspector

  2. Selecione o botão Selecionar Estado para escolher o estado principal a ser adicionado. Os estados no menu são classificados por tipo de interação.

    Add a Core State via Inspector with state selected

  3. Abra o foldout de Configuração de Eventos para exibir os eventos e as propriedades associados ao estado.

    Add a Core State via Inspector with event configuration

Como adicionar um estado principal por meio de script

Use o AddNewState(stateName) método para adicionar um estado principal. Para obter uma lista dos nomes de estado principais disponíveis, use a CoreInteractionState enumeração.

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

interactiveElement.AddNewState("SelectFar");

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

Estrutura Interna dos Estados

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

  • Nome: o nome do estado.
  • Valor: o valor do estado. Se o estado estiver ativado, o valor do estado será 1. Se o estado estiver desativado, o valor do estado será 0.
  • Ativo: se o estado está ativo ou não no momento. O valor da propriedade Active é verdadeiro quando o estado está ativado, false se o estado estiver desativado.
  • Tipo de Interação: o tipo de interação de um estado é o tipo de interação para o qual um estado se destina.
    • None: não dá suporte a nenhuma forma de interação de entrada.
    • Near: suporte à interação próxima. A entrada é considerada quase interação quando uma mão articulada tem contato direto com outro objeto de jogo, ou seja, a posição em que a mão articulada está próxima da posição do objeto de jogo no espaço mundial.
    • Far: suporte à interação distante. A entrada é considerada interação distante quando o contato direto com o objeto do jogo não é necessário. Por exemplo, a entrada por meio do raio do controlador ou do olhar é considerada entrada de interação distante.
    • NearAndFar: abrange o suporte à interação próxima e distante.
    • Other: suporte à interação independente de ponteiro.
  • Configuração de Evento: a configuração de evento para um estado é o ponto de entrada do perfil de eventos serializados.

Todas essas propriedades são definidas internamente no State Manager elemento interativo contido. Para modificação de estados, use os seguintes métodos auxiliares:

Métodos auxiliares de configuraçã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 de evento de um estado é específico para o próprio estado. Cada estado principal tem um tipo de configuração de evento específico que é descrito abaixo nas seções que descrevem cada estado principal.

Aqui está um exemplo generalizado de obtenção da configuração de evento de um 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 em um elemento interativo. Esse estado estará ativo somente quando todos os outros estados não estiverem ativos. Se qualquer outro estado se tornar ativo, o estado Padrão será definido como desativado internamente.

Um elemento interativo é inicializado com os estados Padrão e Foco presentes na lista de estado. O estado Padrão sempre precisa estar presente na lista de estado.

Obtendo eventos de estado padrão

Tipo de configuração de evento para o estado padrão: 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 a realidade misturada equivalente a passar o mouse. O fator diferenciante 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 Ponteiro de Poke, a interação será considerada quase interação. Se o ponteiro primário não for o Ponteiro do Poke, a interação será considerada uma interação distante. O estado de foco está presente no Elemento Interativo por padrão.

Comportamento do estado de focoFocus state with virtual hand interaction

Inspetor de Estado de FocoFocus state in the Inpsector

Obtendo eventos de 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 próximo versus comportamento distante do foco

Focus near and far with virtual hand interaction

Foco próximo ao estado

O estado De Foco Próximo é definido quando um evento de foco é acionado e o ponteiro principal é o ponteiro Poke, uma indicação de interação próxima.

Foco próximo ao comportamento do estadoFocus near state with virtual hand interaction

Focus Near State InspectorFocus near component in the Inspector

Obtendo eventos de estado FocusNear

Tipo de configuração de evento 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");
});

Estado De Foco Distante

O estado De Foco Distante é definido quando o ponteiro primário não é o ponteiro Poke. Por exemplo, o ponteiro de raio do controlador padrão e o ponteiro GGV (Gaze, Gesto, Voz) são considerados ponteiros de interação distantes.

Comportamento de Estado Distante de FocoFocus state far with virtual hand interaction

Inspetor de Estado do Focus FarFocus far component in the Inspector

Obtendo eventos de estado distante do foco

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 do Toque

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

Comportamento do estado do toqueTouch state with virtual hand interaction

Touch State InspectorTouch state component in the Inspector

Obtendo eventos de estado de 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");
});

Selecionar Estado Distante

O estado Selecionar Distante é a IMixedRealityPointerHandler superfície. Esse estado é um estado de interação distante que detecta um clique de interação distante (toque no ar) e mantém o uso de ponteiros de interação distantes, como o ponteiro de raio do controlador padrão ou o ponteiro GGV. O estado Selecionar Distante tem uma opção no foldout de configuração de evento denominada Global. Se Global for true, o IMixedRealityPointerHandler valor será registrado como um manipulador de entrada global. O foco em um objeto não será necessário para disparar eventos do sistema de entrada se um manipulador for registrado como global. Por exemplo, se um usuário quiser saber sempre que o gesto air-tap/select for executado, independentemente do objeto em foco, definido Global como true.

Selecionar Comportamento de Estado DistanteSelect far with virtual hand interaction

Selecionar Inspetor de Estado DistanteSelect far component in the Inspector

Obtendo selecionar eventos de estado distante

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 Clicado é disparado por um clique de interação distante (selecionar estado distante) por padrão. Esse estado é ativado internamente, invoca o evento OnClicked e, em seguida, é imediatamente desligado.

Observação

Os comentários visuais no inspetor com base na atividade de estado não estão presentes para o estado clicado porque ele está ativado e desativado imediatamente.

Comportamento do estado clicadoClicked state with virtual hand interactions

Inspetor de Estado clicadoClick state component in the Inspector

Exemplo de estado de clique próximo e distante
O estado clicado pode ser disparado por meio de pontos de entrada adicionais usando o interactiveElement.TriggerClickedState() método. Por exemplo, se um usuário quiser um toque de interação próximo para disparar um clique em um objeto também, ele adicionará o TriggerClickedState() método como um ouvinte no estado de toque.

Near and far state with virtual hand interactions

Obtendo eventos de estado 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");
});

Ativar e desativar o estado

Os estados Ativar e Ativar Desativar são um par e ambos precisam estar presentes para o comportamento de alternância. Por padrão, os estados Ativar e Ativar Desativar são disparados por meio de um clique de interação distante (selecionar estado distante). Por padrão, o estado Desativar a Alternância está ativo no início, o que significa que a alternância será inicializada para desativada. Se um usuário quiser que o estado de Ativação de Alternância esteja ativo no início, em seguida, no estado De alternância definido IsSelectedOnStart como true.

Comportamento de Alternância e Alternância de EstadoToggle on and off with virtual hand interactions

ToggleOn e Toggle Off State InspectorToggle component in the Inspector

Exemplo de estados de alternância próximos e distantes
Semelhante ao estado clicado, a configuração de estado de alternância pode ter vários pontos de entrada usando o interactiveElement.SetToggleStates() método. Por exemplo, se um usuário quiser tocar como um ponto de entrada adicional para definir os estados de alternância, ele adicionará o SetToggleStates() método a um dos eventos no estado touch.

Near and far toggle with virtual hand interactions

Ativando e desativando eventos de estado

Tipo de configuração de evento para o estado 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 de fala

O estado da palavra-chave de fala escuta as palavras-chave definidas no perfil de fala Realidade Misturada. Qualquer nova palavra-chave DEVE ser registrada no perfil de comando de fala antes do runtime (etapas abaixo).

Comportamento do estado da palavra-chave de falaSpeech keyword with virtual interaction

Inspetor de Estado da palavra-chave de falaSpeech keyword component in the Inspector

Observação

O estado da palavra-chave de fala foi disparado no editor pressionando a tecla F5 no gif acima. A configuração no teste do editor para fala está descrita nas etapas abaixo.

Como registrar um comando de fala/palavra-chave

  1. Selecionar o objeto de jogo MixedRealityToolkit

  2. Selecionar Copiar e Personalizar o perfil atual

  3. Navegue até a seção Entrada e selecione Clonar para habilitar a modificação do perfil de entrada

  4. Role para baixo até a seção Fala no perfil de Entrada e clone o Perfil de Fala

    Speech keyword profile in the MRTK game object

  5. Selecione Adicionar um Novo Comando de Fala

    Adding a new speech keyword in the MRTK profile

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

    Configuring speech keyword in the MRTK profile

  7. Voltar ao inspetor de estado da palavra-chave de fala do elemento interativo e selecione Adicionar palavra-chave

    Adding keyword to interactive element component

    Keyword validation and registration

  8. Insira a nova palavra-chave que acabou de ser registrada no Perfil de Fala

    Entering new speech keyword

Para testar o estado da palavra-chave de fala no editor, pressione o KeyCode que foi definido na etapa 6 (F5) para simular o evento reconhecido pela palavra-chave de fala.

Obtendo eventos de estado da palavra-chave de fala

Tipo de configuração de evento para o Estado SpeechKeyword: 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 por meio do Inspetor

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

  1. Navegue até criar um estado personalizado no inspetor para elemento interativo.

    Creating a custom state

  2. Insira o nome do novo estado. Esse nome deve ser exclusivo e não pode ser o mesmo que os estados principais existentes.

    Entering the name of a new custom state

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

    Add custom state to state list

    Esse estado personalizado é inicializado com a configuração de evento padrão StateEvents que contém o e OnStateOff os OnStateOn eventos. Para criar uma configuração de evento personalizada para um novo estado, consulte: Criando um estado personalizado com uma configuração de evento personalizada.

    New state shown in the interactive element component

Como criar um estado personalizado por meio de 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");
});

Criando um estado personalizado com uma configuração de evento personalizada

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

As etapas a seguir percorrem um exemplo existente de criação de uma configuração de evento de estado personalizado e arquivos receptores.

  1. Pense em um nome de estado. Esse nome deve ser exclusivo e não pode ser o mesmo que os estados principais existentes. Para os fins deste exemplo, o nome do estado será Teclado.

  2. Crie dois arquivos .cs chamados nome de estado + "Receptor" e nome de estado + "Eventos". A nomenclatura desses arquivos é levada em consideração internamente e deve seguir o nome do estado + convenção de evento/receptor.

    Keyboard state scripts

  3. Consulte os arquivos KeyboardEvents.cs e KeyboardReceiver.cs para obter mais detalhes sobre o conteúdo do arquivo. Novas classes de configuração de BaseInteractionEventConfiguration evento devem herdar e novas classes receptores de eventos devem herdar.BaseEventReceiver Exemplos de configuração de estado para o estado do teclado estão localizados no CustomStateSettingExample.cs arquivo.

  4. Adicione o estado ao Elemento Interativo usando o nome de estado, o nome do estado será reconhecido se existirem arquivos de configuração de evento e receptor de eventos. As propriedades no arquivo de configuração de evento personalizado devem aparecer no inspetor.

    Adding custom state to interactive elementCustom state recognized in the interactive element

  5. Para obter mais exemplos de configuração de eventos e arquivos de receptor de eventos, consulte os arquivos nestes caminhos:

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

Cena de exemplo

A cena de exemplo de Elemento Interativo + Visualizador de Estado está localizada aqui: MRTK\SDK\Experimental\InteractiveElement\Examples\InteractiveElementExampleScene.unity

Example scene with Interactive Element and State Visualizer

Botão Compactável

A cena de exemplo contém pré-fabricados nomeados CompressableButton e CompressableButtonToggle, esses pré-fabricados espelham o comportamento dos PressableButtonHoloLens2 botões, que são construídos usando o Elemento Interativo e o Visualizador de Estado. AtualmenteCompressableButton, o componente é uma combinação comPressableButtonHoloLens2PressableButton + BaseInteractiveElementuma classe base.

Visualizador de Estado [Experimental]

O componente Visualizador de Estado adiciona animações a um objeto com base nos estados definidos em um componente do Elemento Interativo vinculado. Esse componente cria ativos de animação, coloca-os na pasta MixedRealityToolkit.Generated e habilita a configuração simplificada do quadro de chaves de animação por meio da adição de propriedades Animatable a um objeto de jogo de destino. Para habilitar transições de animação entre estados, um ativo do Controlador de Animador é criado e um computador de estado padrão é gerado com parâmetros associados e quaisquer transições de estado. O computador de estado pode ser exibido na janela Do Animador do Unity.

Sistema de Animação do State Visualizer e Unity

Atualmente, o Visualizador de Estado aproveita o Sistema de Animação do Unity.

Quando o botão Gerar Novos Clipes de Animação no Visualizador de Estado é pressionado, novos ativos de clipe de animação são gerados com base nos nomes de estado no Elemento Interativo e são colocados na pasta MixedRealityToolkit.Generated. A propriedade Clipe de Animação em cada contêiner de estado é definida como o clipe de animação associado.

Animation clips in state visualizer component

Um Computador de Estado do Animador também é gerado para gerenciar transições suaves entre clipes de animação. Por padrão, o computador de estado utiliza qualquer estado para permitir transições entre qualquer estado no Elemento Interativo.

Visualizadores de estado disparados no animador também são gerados para cada estado, os parâmetros de gatilho são usados no Visualizador de Estado para disparar uma animação.

Unity state machine

Limitações do Runtime

O Visualizador de Estado deve ser adicionado a um objeto por meio do Inspetor e não pode ser adicionado por meio de script. As propriedades que modificam AnimatorStateMachine/AnimationController estão contidas em um namespace do editor (UnityEditor.Animations) que são removidos quando o aplicativo é criado.

Como usar o Visualizador de Estado

  1. Criar um cubo

  2. Anexar elemento interativo

  3. Anexar Visualizador de Estado

  4. Selecionar Gerar Novos Clipes de Animação

    Generating new animation clips

    Showing generated animation clips in visualizer and interactive element components

  5. No contêiner de estado de foco, selecione Adicionar Destino

    Adding state visualizer target

  6. Arrastar o objeto de jogo atual para o campo de destino

    Setting state visualizer target

  7. Abrir o foldout propriedades animatáveis do cubo

  8. Selecione o menu suspenso da propriedade Animatable e selecione Cor

    Setting state visualizer color

  9. Selecione Adicionar a Propriedade Animatable color

    Selecting the visualizer color animatable property

  10. Escolher uma cor

    Choosing a visualizer color from color wheel

  11. Pressione play e observe a alteração de cor transitória

    Transitional color change example with virtual hand interaction

Propriedades animatable

A principal finalidade das Propriedades Animatable é simplificar a configuração do quadro de chaves de clipe de animação. Se um usuário estiver familiarizado com o Sistema de Animação do Unity e preferir definir diretamente os quadros de chaves nos clipes de animação gerados, ele simplesmente não poderá adicionar propriedades Animatable a um objeto de destino e abrir o clipe na janela Animação do Unity (Windows > Animação de Animação>).

Se estiver usando as propriedades Animatable para animação, o tipo de curva será definido como EaseInOut.

Propriedades animatáveis atuais:

Deslocamento de Escala

A propriedade Animatable Scale Offset usa a escala atual do objeto e adiciona o deslocamento definido.

Scale offset with virtual hand interaction

Deslocamento de posição

A propriedade Animatable de Deslocamento de Posição assume a posição atual do objeto e adiciona o deslocamento definido.

Position offset with virtual hand interaction

Color

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

Focus color change with virtual hand interaction

Cor do sombreador

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

Shade color with virtual hand interaction

Sombreador Float

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

Shader float with virtual hand interaction

Vetor de sombreador

A propriedade Sombreador Vector Animatable refere-se a uma propriedade de sombreador do tipo Vector4. Um nome de propriedade é necessário para todas as propriedades do sombreador. No gif abaixo, observe os valores de alteração no inspetor de material para a propriedade Tiling (Main Tex_ST).

Shader vector with virtual hand interaction

Como localizar nomes de propriedade de sombreador animatável

  1. Navegar até a animação de janela >>

  2. Verifique se o objeto com o Visualizador de Estado está selecionado na hierarquia

  3. Selecionar qualquer clipe de animação na janela Animação

  4. Selecione Adicionar Propriedade, abra o dobrável Mesh Renderizador

    Adding animation property in the Animator window

  5. Esta lista contém os nomes de todos os nomes de propriedade Animatable

    Mesh renderer animation properties in the Animator window

Confira também