Partager via


Élément interactif [expérimental] — MRTK2

Point d’entrée centralisé simplifié du système d’entrée MRTK. Contient les méthodes de gestion d’état, la gestion des événements et la logique de paramètre d’état pour les états d’interaction principaux.

Interactive Element est une fonctionnalité expérimentale prise en charge dans Unity 2019.3 et versions ultérieures, car il utilise une fonctionnalité nouvelle d’Unity 2019.3 : Sérialiser la référence.

Inspecteur d’élément interactif

En mode lecture, l’inspecteur élément interactif fournit des commentaires visuels qui indiquent si l’état actuel est actif ou non. Si un état est actif, il est mis en surbrillance avec une couleur cyan. Si l’état n’est pas actif, la couleur n’est pas modifiée. Les nombres en regard des états de l’inspecteur sont les valeurs d’état. Si l’état est actif, la valeur est 1, si l’état n’est pas actif, la valeur est 0.

Élément interactif avec interaction de main virtuelle

États principaux

Interactive Element contient des états principaux et prend en charge l’ajout d’états personnalisés. Un état de base est un état qui a déjà la logique de paramètre d’état définie dans BaseInteractiveElement. Voici une liste des états principaux actuels pilotés par les entrées :

États principaux actuels

États principaux de l’interaction proche et éloignée :

Près des états principaux d’interaction :

États principaux de l’interaction far :

Autres états principaux :

Comment ajouter un état de base via Inspector

  1. Accédez à Ajouter un état principal dans l’inspecteur de l’élément interactif.

    Ajouter un état de base via Inspector

  2. Sélectionnez le bouton Sélectionner l’état pour choisir l’état principal à ajouter. Les états du menu sont triés par type d’interaction.

    Ajouter un état de base via Inspector avec l’état sélectionné

  3. Ouvrez le pliage Configuration de l’événement pour afficher les événements et les propriétés associés à l’état.

    Ajouter un état de base via Inspector avec la configuration d’événement

Comment ajouter un état de base via un script

Utilisez la AddNewState(stateName) méthode pour ajouter un état de base. Pour obtenir la liste des noms d’état principaux disponibles, utilisez l’énumération CoreInteractionState .

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

interactiveElement.AddNewState("SelectFar");

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

Structure interne des états

Les états dans Interactive Element sont de type InteractionState. Un InteractionState contient les propriétés suivantes :

  • Nom : nom de l’état.
  • Valeur : valeur d’état. Si l’état est activé, la valeur d’état est 1. Si l’état est désactivé, la valeur d’état est 0.
  • Actif : indique si l’état est actif ou non. La valeur de la propriété Active est true lorsque l’état est activé, false si l’état est désactivé.
  • Type d’interaction : le type d’interaction d’un état est le type d’interaction auquel un état est destiné.
    • None: ne prend pas en charge aucune forme d’interaction d’entrée.
    • Near: Prise en charge de l’interaction proche. L’entrée est considérée comme une interaction proche lorsqu’une main articulée a un contact direct avec un autre objet de jeu, c’est-à-dire que la position de la main articulée est proche de la position de l’objet de jeu dans l’espace du monde.
    • Far: prise en charge des interactions distantes. L’entrée est considérée comme une interaction à distance lorsque le contact direct avec l’objet de jeu n’est pas requis. Par exemple, l’entrée via le rayon ou le regard du contrôleur est considérée comme une entrée d’interaction éloignée.
    • NearAndFar: englobe la prise en charge des interactions proches et éloignées.
    • Other: prise en charge de l’interaction indépendante du pointeur.
  • Configuration d’événement : la configuration d’événement d’un état est le point d’entrée du profil d’événements sérialisés.

Toutes ces propriétés sont définies en interne dans le State Manager contenu dans Interactive Element. Pour modifier les états, utilisez les méthodes d’assistance suivantes :

Méthodes d’assistance des paramètres d’état

// 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");

L’obtention de la configuration d’événement d’un état est spécifique à l’état lui-même. Chaque état de cœur a un type de configuration d’événement spécifique qui est décrit ci-dessous sous les sections décrivant chaque état de cœur.

Voici un exemple généralisé d’obtention de la configuration d’événement d’un état :

// 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");

État par défaut

L’état Par défaut est toujours présent sur un élément interactif. Cet état ne sera actif que lorsque tous les autres états ne le sont pas. Si un autre état devient actif, l’état Par défaut est désactivé en interne.

Un élément interactif est initialisé avec les états Par défaut et Focus présents dans la liste des états. L’état par défaut doit toujours être présent dans la liste des états.

Obtention d’événements d’état par défaut

Type de configuration d’événement pour l’état par défaut : 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");
});

État du focus

L’état Focus est un état d’interaction proche et lointain qui peut être considéré comme la réalité mixte équivalente au pointage. Le facteur de distinction entre l’interaction proche et éloignée pour l’état Focus est le type de pointeur actif actuel. Si le type de pointeur pour l’état Focus est le pointeur Poke, l’interaction est considérée comme une interaction proche. Si le pointeur principal n’est pas le pointeur Poke, l’interaction est considérée comme une interaction à distance. L’état Focus est présent dans l’élément interactif par défaut.

État du focusÉtat Comportement État focus avec interaction de main virtuelle

État du focus InspecteurÉtat Focus dans l’inpsecteur

Obtention d’événements d’état focus

Type de configuration d’événement pour l’état focus : 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");
});

Focus Near vs Focus Far Comportement

Concentrez-vous près et loin avec l’interaction de la main virtuelle

État proche du focus

L’état Focus Near est défini lorsqu’un événement focus est déclenché et que le pointeur principal est le pointeur Poke, une indication d’une interaction proche.

Focus Near State BehaviorFocus Focus Near State near state avec interaction de main virtuelle

Focus Near State InspectorFocus near dans l’inspecteur

Obtention d’événements d’état FocusNear

Type de configuration d’événement pour l’état 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");
});

État à distance du focus

L’état Focus Far est défini lorsque le pointeur principal n’est pas le pointeur Poke. Par exemple, le pointeur de rayon du contrôleur par défaut et le pointeur GGV (Gaze, Gesture, Voice) sont considérés comme des pointeurs d’interaction éloignée.

État de l’état de focusà distance État de focus avec interaction de main virtuelle

Focus Far State InspectorFocus far dans l’inspecteur

Obtention d’événements d’état éloigné du focus

Type de configuration d’événement pour l’état 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");
});

État tactile

L’état Tactile est un état d’interaction proche qui est défini lorsqu’une main articulée touche directement l’objet. Un contact direct signifie que l’index de la main articulée est très proche de la position mondiale de l’objet. Par défaut, un NearInteractionTouchableVolume composant est attaché à l’objet si l’état Touch est ajouté à la liste des états. La présence d’un NearInteractionTouchableVolume composant ou est NearInteractionTouchable requise pour la détection des événements Touch. La différence entre NearInteractionTouchableVolume et NearInteractionTouchable est que NearInteractionTouchableVolume détecte un contact tactile basé sur le collisionneur de l’objet et NearInteractionTouchabledétecte le toucher dans une zone définie d’un plan.

État tactile ComportementÉtat tactile avec interaction de main virtuelle

Composantd’état tactile De l’inspecteur d’état tactile dans l’inspecteur

Obtention d’événements d’état tactile

Type de configuration d’événement pour l’état tactile : 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");
});

Sélectionner l’état lointain

L’état Sélectionner loin est le IMixedRealityPointerHandler surfaced. Cet état est un état d’interaction à distance qui détecte le clic d’interaction à distance (appui aérien) et maintient la conservation via l’utilisation de pointeurs d’interaction à distance tels que le pointeur de rayon du contrôleur par défaut ou le pointeur GGV. L’état Sélectionner loin a une option sous le pli de configuration d’événement nommée Global. Si Global a la valeur true, le IMixedRealityPointerHandler est inscrit en tant que gestionnaire d’entrée global. Il n’est pas nécessaire de se concentrer sur un objet pour déclencher des événements système d’entrée si un gestionnaire est inscrit comme global. Par exemple, si un utilisateur souhaite savoir à quel moment le mouvement air-tap/select est effectué quel que soit l’objet dans le focus, définissez Global sur true.

Sélectionner Le comportement de l’étatlointain Sélectionner loin avec l’interaction de la main virtuelle

Sélectionner l’inspecteur d’état lointainSélectionner un composant éloigné dans l’inspecteur

Obtention d’événements d’état lointain sélectionnés

Type de configuration d’événement pour l’état 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");
});

État cliqué

L’état Cliqué est déclenché par un clic d’interaction distante (Sélectionner l’état Éloigné) par défaut. Cet état est activé en interne, appelle l’événement OnClicked, puis est immédiatement désactivé.

Notes

Les commentaires visuels dans l’inspecteur en fonction de l’activité d’état ne sont pas présents pour l’état Cliqué, car il est activé, puis désactivé immédiatement.

Comportement de l’étatcliqué État cliqué avec interactions de main virtuelle

Inspecteur d’état cliquésur Le composant État de clic dans l’inspecteur

Exemple d’état proche et lointain
L’état cliqué peut être déclenché via des points d’entrée supplémentaires à l’aide de la interactiveElement.TriggerClickedState() méthode . Par exemple, si un utilisateur souhaite qu’une interaction tactile proche déclenche également un clic sur un objet, il ajoute la TriggerClickedState() méthode en tant qu’écouteur à l’état tactile.

État proche et lointain avec des interactions de main virtuelles

Obtention d’événements d’état cliqués

Type de configuration d’événement pour l’état cliqué : ClickedEvents

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

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

Activer et désactiver l’état

Les états Activer et Désactiver sont une paire et les deux doivent être présents pour le comportement du bouton bascule. Par défaut, les états Activer et Désactiver sont déclenchés par un clic d’interaction loin (Sélectionner un état lointain). Par défaut, l’état Désactiver est actif au démarrage, ce qui signifie que le bouton bascule sera initialisé sur désactivé. Si un utilisateur souhaite que l’état Bascule activé soit actif au démarrage, dans l’état Basculer sur défini IsSelectedOnStart sur true.

ToggleOn et Toggle Off State BehaviorActiver et désactiver avec des interactions de main virtuelles

ToggleOn et Toggle Off State InspectorToggle dans l’inspecteur

Exemple d’états bascules proches et lointains
Comme pour l’état Cliqué, le paramètre d’état bascule peut avoir plusieurs points d’entrée à l’aide de la interactiveElement.SetToggleStates() méthode . Par exemple, si un utilisateur souhaite que la touche tactile soit un point d’entrée supplémentaire pour définir les états bascule, il ajoute la méthode à l’un SetToggleStates() des événements dans l’état Touch.

Bascule proche et éloignée avec des interactions de main virtuelles

Activation et désactivation des événements d’état

Type de configuration d’événement pour l’état ToggleOn : ToggleOnEvents
Type de configuration d’événement pour l’état 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");
});

État du mot clé speech

L’état Mot clé speech écoute les mots clés définis dans le profil vocal Mixed Reality. Toute nouvelle mot clé DOIT être inscrite dans le profil de commande speech avant l’exécution (étapes ci-dessous).

Comportement de l’état du mot clé speechmot clé avec interaction virtuelle

Composant Speech Mot clé de l’inspecteur d’état du mot clé Speechdans l’inspecteur

Notes

L’état Mot clé speech a été déclenché dans l’éditeur en appuyant sur la touche F5 dans l’gif ci-dessus. La configuration dans le test de l’éditeur pour la reconnaissance vocale est décrite ci-dessous.

Guide pratique pour inscrire une commande/un mot clé Speech

  1. Sélectionnez l’objet de jeu MixedRealityToolkit

  2. Sélectionnez Copier et personnaliser le profil actuel

  3. Accédez à la section Entrée, puis sélectionnez Cloner pour permettre la modification du profil d’entrée.

  4. Faites défiler jusqu’à la section Speech dans le profil d’entrée et clonez le profil speech

    Profil speech mot clé dans l’objet de jeu MRTK

  5. Sélectionnez Ajouter une nouvelle commande speech

    Ajout d’une nouvelle mot clé vocale dans le profil MRTK

  6. Entrez le nouveau mot clé. Facultatif : remplacez keyCode par F5 (ou un autre KeyCode) pour permettre les tests dans l’éditeur.

    Configuration de la mot clé vocale dans le profil MRTK

  7. Retour à l’inspecteur d’état du mot clé speech de l’élément interactif et sélectionnez Ajouter un mot clé

    Ajout de mot clé au composant d’élément interactif

    Validation et inscription des mots clés

  8. Entrez le nouveau mot clé qui vient d’être inscrit dans le profil speech

    Entrée de nouvelles mot clé vocales

Pour tester l’état du mot clé speech dans l’éditeur, appuyez sur le Code clé qui a été défini à l’étape 6 (F5) pour simuler l’événement mot clé reconnu.

Obtention d’événements d’état de mot clé speech

Type de configuration d’événement pour l’état 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"); 
});

États personnalisés

Comment créer un état personnalisé via Inspector

L’état personnalisé créé via l’inspecteur sera initialisé avec la configuration d’événement d’état par défaut. La configuration d’événement par défaut pour un état personnalisé est de type StateEvents et contient les événements OnStateOn et OnStateOff.

  1. Accédez à Créer un état personnalisé dans l’inspecteur de l’élément interactif.

    Création d’un état personnalisé

  2. Entrez le nom du nouvel état. Ce nom doit être unique et ne peut pas être identique aux états principaux existants.

    Entrée du nom d’un nouvel état personnalisé

  3. Sélectionnez Définir le nom d’état à ajouter à la liste d’états.

    Ajouter un état personnalisé à la liste d’états

    Cet état personnalisé est initialisé avec la configuration d’événement par défaut StateEvents qui contient les OnStateOn événements et OnStateOff . Pour créer une configuration d’événement personnalisée pour un nouvel état, consultez : Création d’un état personnalisé avec une configuration d’événement personnalisée.

    Nouvel état affiché dans le composant d’élément interactif

Comment créer un état personnalisé via un 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");
});

Création d’un état personnalisé avec une configuration d’événement personnalisée

Des exemples de fichiers pour un état personnalisé nommé Clavier se trouvent ici : MRTK\SDK\Experimental\InteractiveElement\Examples\Scripts\CustomStateExample

Les étapes suivantes décrivent un exemple existant de création d’un fichier récepteur et d’une configuration d’événement d’état personnalisé.

  1. Pensez à un nom d’état. Ce nom doit être unique et ne peut pas être identique aux états principaux existants. Pour les besoins de cet exemple, le nom d’état sera Clavier.

  2. Créez deux fichiers .cs nommés state name + « Receiver » et state name + « Events ». Le nommage de ces fichiers est pris en compte en interne et doit suivre le nom d’état + convention événement/récepteur.

    Scripts d’état du clavier

  3. Pour plus d’informations sur le contenu des fichiers, consultez les fichiers KeyboardEvents.cs et KeyboardReceiver.cs. Les nouvelles classes de configuration d’événements doivent hériter de BaseInteractionEventConfiguration et les nouvelles classes de récepteur d’événements doivent hériter de BaseEventReceiver. Des exemples de paramètres d’état pour l’état du clavier se trouvent dans le CustomStateSettingExample.cs fichier .

  4. Ajoutez l’état à Interactive Element à l’aide du nom d’état. Le nom d’état est reconnu si des fichiers de configuration d’événement et de récepteur d’événements existent. Les propriétés du fichier de configuration d’événement personnalisé doivent apparaître dans l’inspecteur.

    Ajout d’un état personnalisé à l’élément interactif État personnalisé reconnu dans l’élément interactif

  5. Pour obtenir d’autres exemples de fichiers de configuration d’événements et de récepteurs d’événements, consultez les fichiers situés sur les chemins suivants :

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

Exemple de scène

L’exemple de scène pour Interactive Element + State Visualizer se trouve ici : MRTK\SDK\Experimental\InteractiveElement\Examples\InteractiveElementExampleScene.unity

Exemple de scène avec interactive élément et visualiseur d’état

Bouton compressable

L’exemple de scène contient des préfabriqués nommés CompressableButton et CompressableButtonToggle, ces préfabriqués miroir le comportement des boutons, qui sont construits à l’aide PressableButtonHoloLens2 de l’élément interactif et du visualiseur d’état. Le CompressableButton composant est actuellement une combinaison de avec BaseInteractiveElementcomme classe de PressableButton + PressableButtonHoloLens2 base.

Visualiseur d’état [expérimental]

Le composant Visualiseur d’état ajoute des animations à un objet en fonction des états définis dans un composant d’élément interactif lié. Ce composant crée des ressources d’animation, les place dans le dossier MixedRealityToolkit.Generated et active le paramètre d’image clé d’animation simplifié en ajoutant des propriétés Animatable à un objet de jeu cible. Pour activer les transitions d’animation entre les états, une ressource de contrôleur d’animation est créée et une machine à états par défaut est générée avec les paramètres associés et toutes les transitions d’état. La machine à états peut être consultée dans la fenêtre Animator d’Unity.

Visualiseur d’état et système d’animation Unity

Le visualiseur d’état tire actuellement parti du système d’animation Unity.

Lorsque vous appuyez sur le bouton Générer de nouveaux clips d’animation dans le visualiseur d’état, les nouvelles ressources de clip d’animation sont générées en fonction des noms d’état dans Interactive Element et placées dans le dossier MixedRealityToolkit.Generated. La propriété Clip d’animation dans chaque conteneur d’état est définie sur le clip d’animation associé.

Clips d’animation dans le composant visualiseur d’état

Un Animator State Machine est également généré pour gérer les transitions fluides entre les clips d’animation. Par défaut, la machine à états utilise l’état Any pour autoriser les transitions entre n’importe quel état dans Interactive Element.

Les visualiseurs d’état déclenchés dans l’animateur sont également générés pour chaque état. Les paramètres de déclencheur sont utilisés dans le visualiseur d’état pour déclencher une animation.

Machine à états Unity

Limitations du runtime

Le visualiseur d’état doit être ajouté à un objet via l’inspecteur et ne peut pas être ajouté via un script. Les propriétés qui modifient AnimatorStateMachine/AnimationController sont contenues dans un espace de noms d’éditeur (UnityEditor.Animations) qui est supprimé lorsque l’application est générée.

Comment utiliser le visualiseur d’état

  1. Créer un cube

  2. Élément interactif Attach

  3. Visualiseur d’état d’attachement

  4. Sélectionnez Générer de nouveaux clips d’animation.

    Génération de nouveaux clips d’animation

    Affichage des clips d’animation générés dans les composants du visualiseur et des éléments interactifs

  5. Dans le conteneur État du focus, sélectionnez Ajouter une cible.

    Ajout d’une cible de visualiseur d’état

  6. Faire glisser l’objet de jeu actuel vers le champ cible

    Définition de la cible du visualiseur d’état

  7. Ouvrir le pliage Propriétés animatables du cube

  8. Sélectionnez le menu déroulant de la propriété Animatable, puis sélectionnez Couleur.

    Définition de la couleur du visualiseur d’état

  9. Sélectionnez Ajouter la propriété Animatable de couleur.

    Sélection de la propriété animatable de couleur du visualiseur

  10. Choisir une couleur

    Choix d’une couleur de visualiseur à partir d’une roulette de couleur

  11. Appuyez sur Play et observez le changement de couleur de transition

    Exemple de changement de couleur transitionnel avec interaction de la main virtuelle

Propriétés animatables

L’objectif principal des propriétés animatables est de simplifier le paramètre d’image clé du clip d’animation. Si un utilisateur connaît le système d’animation Unity et préfère définir directement des images clés sur les clips d’animation générés, il ne peut tout simplement pas ajouter des propriétés Animatable à un objet cible et ouvrir le clip dans la fenêtre Animation d’Unity (Animation Windows >> ).

Si vous utilisez les propriétés Animatable pour l’animation, le type de courbe est défini sur EaseInOut.

Propriétés animatables actuelles :

Décalage d’échelle

La propriété Animatable de décalage d’échelle prend l’échelle actuelle de l’objet et ajoute le décalage défini.

Décalage de mise à l’échelle avec interaction de main virtuelle

Décalage de position

La propriété Animatable décalage de position prend la position actuelle de l’objet et ajoute le décalage défini.

Décalage de position avec interaction de la main virtuelle

Color

La propriété Color Animatable représente la couleur main d’un matériau si le matériau a une propriété de couleur main. Cette propriété anime la material._Color propriété .

Changement de couleur de focus avec l’interaction de la main virtuelle

Couleur du nuanceur

La propriété Nuanceur Color Animatable fait référence à une propriété de nuanceur de type couleur. Un nom de propriété est requis pour toutes les propriétés du nuanceur. Le gif ci-dessous illustre l’animation d’une propriété de couleur de nuanceur nommée Fill_Color qui n’est pas la couleur de matériau main. Observez les valeurs changeantes dans l’inspecteur de matériaux.

Couleur d’ombre avec interaction de la main virtuelle

Nuanceur Float

La propriété Shader Float Animatable fait référence à une propriété de nuanceur de type float. Un nom de propriété est requis pour toutes les propriétés du nuanceur. Dans le gif ci-dessous, observez les valeurs changeantes dans l’inspecteur de matériau pour la propriété Metallic.

Nuanceur float avec interaction de la main virtuelle

Vecteur de nuanceur

La propriété Animatable du vecteur de nuanceur fait référence à une propriété de nuanceur de type Vector4. Un nom de propriété est requis pour toutes les propriétés du nuanceur. Dans le gif ci-dessous, observez les valeurs changeantes dans l’inspecteur de matériau pour la propriété Mosaïne (Main Tex_ST).

Vecteur de nuanceur avec interaction de la main virtuelle

Guide pratique pour trouver des noms de propriétés animatable Shader

  1. Accédez à Animation de > fenêtre >

  2. Vérifiez que l’objet avec le visualiseur d’état est sélectionné dans la hiérarchie

  3. Sélectionner un clip d’animation dans la fenêtre Animation

  4. Sélectionnez Ajouter une propriété, ouvrez le plieur de rendu de maillage.

    Ajout d’une propriété d’animation dans la fenêtre Animator

  5. Cette liste contient les noms de tous les noms de propriétés Animatable

    Propriétés de l’animation du convertisseur de maillage dans la fenêtre Animator

Voir aussi