Share via


Interactief element [experimenteel] — MRTK2

Een vereenvoudigd gecentraliseerd toegangspunt voor het MRTK-invoersysteem. Bevat statusbeheermethoden, gebeurtenisbeheer en de statusinstellingslogica voor Kerninteractiestatussen.

Interactive Element is een experimentele functie die wordt ondersteund in Unity 2019.3 en hoger omdat het gebruikmaakt van een nieuwe functie voor Unity 2019.3: Serialize Reference.

Interactive Element Inspector

Tijdens de afspeelmodus geeft de inspector voor interactieve elementen visuele feedback die aangeeft of de huidige status al dan niet actief is. Als een status actief is, wordt deze gemarkeerd met een cyaankleur. Als de status niet actief is, wordt de kleur niet gewijzigd. De getallen naast de statussen in de inspector zijn de statuswaarden. Als de status actief is, is de waarde 1 en als de status niet actief is, is de waarde 0.

Interactief element met virtuele handinteractie

Kernstatussen

Interactief element bevat kernstatussen en ondersteunt het toevoegen van aangepaste statussen. Een kernstatus is een status waarvoor de statusinstellingslogica al is gedefinieerd in BaseInteractiveElement. Hier volgt een lijst met de huidige invoergestuurde kernstatussen:

Huidige kernstatussen

Kernstatussen van interactie in de buurt en ver weg:

Kernstatussen van interactie in de buurt:

Kernstatussen van ver-interactie:

Andere kernstatussen:

Een kernstatus toevoegen via Inspector

  1. Navigeer naar Kernstatus toevoegen in de inspector voor Interactief element.

    Een kernstatus toevoegen via Inspector

  2. Selecteer de knop Status selecteren om de kernstatus te kiezen die u wilt toevoegen. De statussen in het menu worden gesorteerd op interactietype.

    Een kernstatus toevoegen via Inspector met de status geselecteerd

  3. Open de uitvouwbare gebeurtenisconfiguratie om de gebeurtenissen en eigenschappen weer te geven die zijn gekoppeld aan de status.

    Een kernstatus toevoegen via Inspector met gebeurtenisconfiguratie

Een kernstatus toevoegen via script

Gebruik de AddNewState(stateName) methode om een kernstatus toe te voegen. Gebruik de CoreInteractionState opsomming voor een lijst met de namen van de beschikbare kernstatussen.

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

interactiveElement.AddNewState("SelectFar");

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

Interne structuur van staten

De statussen in het interactieve element zijn van het type InteractionState. Een InteractionState bevat de volgende eigenschappen:

  • Naam: de naam van de status.
  • Waarde: de statuswaarde. Als de status is ingeschakeld, is de statuswaarde 1. Als de status is uitgeschakeld, is de statuswaarde 0.
  • Actief: hiermee wordt aangegeven of de status momenteel actief is. De waarde voor de eigenschap Actief is waar wanneer de status is ingeschakeld, onwaar als de status is uitgeschakeld.
  • Interactietype: Het interactietype van een status is het type interactie waarvoor een status is bedoeld.
    • None: biedt geen ondersteuning voor enige vorm van invoerinteractie.
    • Near: Ondersteuning voor bijna-interactie. Invoer wordt beschouwd als bijna-interactie wanneer een gearticuleerde hand direct contact heeft met een ander spelobject, dat wil zeggen de positie van de gearticuleerde hand dicht bij de positie van het spelobject in de wereldruimte.
    • Far: ondersteuning voor verre interactie. Invoer wordt beschouwd als verre interactie wanneer direct contact met het gameobject niet vereist is. Invoer via controller ray of gaze wordt bijvoorbeeld beschouwd als invoer met verre interactie.
    • NearAndFar: Omvat zowel ondersteuning voor interactie dichtbij als ver weg.
    • Other: Ondersteuning voor onafhankelijke interactie met aanwijzers.
  • Gebeurtenisconfiguratie: De gebeurtenisconfiguratie voor een status is het ingangspunt van het geserialiseerde gebeurtenisprofiel.

Al deze eigenschappen worden intern ingesteld in de State Manager in Interactive Element. Gebruik de volgende helpermethoden voor het wijzigen van statussen:

Helpermethoden voor statusinstellingen

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

Het verkrijgen van de gebeurtenisconfiguratie van een status is specifiek voor de status zelf. Elke kernstatus heeft een specifiek gebeurtenisconfiguratietype dat hieronder wordt beschreven in de secties waarin elke kernstatus wordt beschreven.

Hier volgt een gegeneraliseerd voorbeeld van het ophalen van de gebeurtenisconfiguratie van een status:

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

Standaardstatus

De status Standaard is altijd aanwezig op een interactief element. Deze status is alleen actief wanneer niet alle andere statussen actief zijn. Als een andere status actief wordt, wordt de standaardstatus intern uitgeschakeld.

Een interactief element wordt geïnitialiseerd met de statussen Standaard en Focus die aanwezig zijn in de statuslijst. De standaardstatus moet altijd aanwezig zijn in de statuslijst.

Standaardstatus-gebeurtenissen ophalen

Gebeurtenisconfiguratietype voor de standaardstatus: 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");
});

Focusstatus

De status Focus is een bijna-en-verre interactiestatus die kan worden beschouwd als de mixed reality-equivalent van hover. De onderscheidende factor tussen bijna en ver weg interactie voor de focusstatus is het huidige actieve type aanwijzer. Als het type aanwijzer voor de status Focus de Aanwijzer is, wordt de interactie als bijna-interactie beschouwd. Als de primaire aanwijzer niet de Poke-aanwijzer is, wordt de interactie beschouwd als verre interactie. De status Focus is standaard aanwezig in het interactieve element.

FocusstatusgedragFocusstatus met virtuele handinteractie

Controlestatus Focusstatusin de sector Inp

Focusstatusevenementen ophalen

Gebeurtenisconfiguratietype voor de focusstatus: 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 Behavior

Focus dichtbij en ver weg met virtuele handinteractie

Focus in de buurt van status

De status Focus near wordt ingesteld wanneer een focus-gebeurtenis wordt geactiveerd en de primaire aanwijzer de Aanwijzer is, een indicatie van bijna-interactie.

Focus near State BehaviorFocus near state with virtual hand interaction

Focus near State InspectorFocus near component in de Inspector

FocusNieuwe statusevenementen ophalen

Gebeurtenisconfiguratietype voor de FocusNear-status: 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");
});

Status ver van focus

De status Focus far wordt ingesteld wanneer de primaire aanwijzer niet de Poke-aanwijzer is. De standaardstraalpointer voor de controller en de GGV-aanwijzer (Gaze, Gesture, Voice) worden bijvoorbeeld beschouwd als aanwijzers voor verre interactie.

Focus Far State BehaviorFocus state far with virtual hand interaction

Focus Far State InspectorFocus far component in de Inspector

Focus ver weg gebeurtenissen krijgen

Gebeurtenisconfiguratietype voor de FocusFar-status: 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");
});

Aanraakstatus

De aanraakstatus is een bijna-interactiestatus die wordt ingesteld wanneer een gearticuleerde hand het object rechtstreeks aanraakt. Een directe aanraking betekent dat de wijsvinger van de gelede hand zich heel dicht bij de wereldpositie van het object bevindt. Standaard wordt een NearInteractionTouchableVolume onderdeel aan het object gekoppeld als de aanraakstatus wordt toegevoegd aan de statuslijst. De aanwezigheid van een NearInteractionTouchableVolume of-onderdeel NearInteractionTouchable is vereist voor het detecteren van touch-gebeurtenissen. Het verschil tussen NearInteractionTouchableVolume en NearInteractionTouchable is dat NearInteractionTouchableVolume een aanraking wordt gedetecteerd op basis van de collider van het object en NearInteractionTouchabledat aanraking binnen een gedefinieerd gebied van een vlak wordt gedetecteerd.

AanraakstatusgedragAanraakstatus met virtuele handinteractie

Touch State InspectorHet onderdeel Touchstatus in de Inspector

Aanraakstatus-gebeurtenissen ophalen

Gebeurtenisconfiguratietype voor de aanraakstatus: 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");
});

Verre status selecteren

De status Select Far is de IMixedRealityPointerHandler weergegeven status. Deze status is een verre interactiestatus die verre interactieklik detecteert (air-tap) en het gebruik van ver-interactie-aanwijzers zoals de standaard controller ray pointer of de GGV-aanwijzer. De status Verre selecteren heeft een optie onder de uitvouwbare gebeurtenisconfiguratie met de naam Global. Als Global waar is, wordt de IMixedRealityPointerHandler geregistreerd als een globale invoerhandler. Focus op een object is niet vereist om invoersysteem gebeurtenissen te activeren als een handler is geregistreerd als globaal. Als een gebruiker bijvoorbeeld wil weten wanneer de beweging air-tap/select wordt uitgevoerd, ongeacht het object in de focus, stelt u Global in op true.

Gedrag van verre status selecteren Selecteer ver met virtuele handinteractie

Select Far State InspectorSelect far component in de Inspector

Gebeurtenissen van verre status selecteren

Gebeurtenisconfiguratietype voor de SelectFar-status: 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");
});

Op status geklikt

De status Clicked wordt standaard geactiveerd door een klik op ver-interactie (Status Verre selecteren). Deze status wordt intern ingeschakeld, roept de gebeurtenis OnClicked aan en wordt vervolgens onmiddellijk uitgeschakeld.

Notitie

De visuele feedback in de inspector op basis van statusactiviteit is niet aanwezig voor de status Aangeklikt omdat deze is ingeschakeld en vervolgens onmiddellijk wordt uitgeschakeld.

Clicked State BehaviorClicked state with virtual hand interactions (Klik op statusgedrag met virtuele handinteracties)

Klik op StatuscontroleKlik op het onderdeel Status in de Inspector

Voorbeeld van status in de buurt en ver weg
De aangeklikte status kan worden geactiveerd via extra toegangspunten met behulp van de interactiveElement.TriggerClickedState() -methode. Als een gebruiker bijvoorbeeld wil dat een bijna-interactie-aanraking ook een klik op een object activeert, voegt deze de TriggerClickedState() methode toe als een listener met de aanraakstatus.

Status dichtbij en ver weg met virtuele handinteracties

Statusgebeurtenissen krijgen waar op wordt geklikt

Gebeurtenisconfiguratietype voor de aangeklikte status: ClickedEvents

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

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

Status aan en uitschakelen

De status Wisselknop aan en Wissel-uit zijn een paar en beide moeten aanwezig zijn voor wisselgedrag. Standaard worden de status Aan en Uitschakelen geactiveerd via een klik op ver-interactie (Status Ver selecteren). Standaard is de status Wisselknop uit actief bij het starten, wat betekent dat de wisselknop wordt geïnitialiseerd op uit. Als een gebruiker de status Wisselknop aan actief wil maken bij het starten, stelt u in de status IsSelectedOnStart Wisselknop aan in op true.

Statusgedrag in- en uitschakelen Met virtuele handinteracties in- en uitschakelen

Het onderdeel Statuscontrole in- en uitschakelenin- en uitschakelen in de inspector

Voorbeeld van wisselstatussen in de buurt en ver
Net als bij de status Aangeklikt kan de instelling voor de wisselstatus meerdere toegangspunten hebben met behulp van de interactiveElement.SetToggleStates() -methode. Als een gebruiker bijvoorbeeld aanraakinvoer als extra toegangspunt wil om de wisselstatussen in te stellen, voegt deze de SetToggleStates() methode toe aan een van de gebeurtenissen met de status Touch.

Wisselknop dichtbij en ver weg met virtuele handinteracties

Statusevenementen in- en uitschakelen

Gebeurtenisconfiguratietype voor de status ToggleOn: ToggleOnEvents
Gebeurtenisconfiguratietype voor de status 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");
});

Status van spraakwoord

De status Spraaktrefwoord luistert naar de trefwoorden die zijn gedefinieerd in het Mixed Reality Spraakprofiel. Nieuw trefwoord MOET vóór runtime worden geregistreerd in het spraakopdrachtprofiel (stappen hieronder).

Speech Keyword State BehaviorSpraak trefwoord met virtuele interactie

Speech Keyword State InspectorHet trefwoordonderdeel Spraak in inspector

Notitie

De status van het spraakwoord is geactiveerd in de editor door op de toets F5 in de bovenstaande GIF te drukken. De onderstaande stappen worden beschreven in het instellen van het testen van spraak in de editor.

Een spraakopdracht/-trefwoord registreren

  1. Selecteer het gameobject MixedRealityToolkit

  2. Selecteer Kopiëren en Het huidige profiel aanpassen

  3. Navigeer naar de sectie Invoer en selecteer Klonen om het invoerprofiel te wijzigen

  4. Schuif omlaag naar de sectie Spraak in het invoerprofiel en kloon het spraakprofiel

    Spraak-trefwoordprofiel in het MRTK-gameobject

  5. Selecteer Een nieuwe spraakopdracht toevoegen

    Een nieuw trefwoord voor spraak toevoegen aan het MRTK-profiel

  6. Voer het nieuwe trefwoord in. Optioneel: wijzig de KeyCode in F5 (of een andere KeyCode) om testen in de editor toe te staan.

    Het trefwoord voor spraak configureren in het MRTK-profiel

  7. Terug naar de statuscontrole Interactive Element Speech Keyword en selecteer Trefwoord toevoegen

    Trefwoord toevoegen aan het onderdeel interactief element

    Trefwoordvalidatie en -registratie

  8. Voer het nieuwe trefwoord in dat zojuist is geregistreerd in het spraakprofiel

    Nieuw trefwoord voor spraak invoeren

Als u de status van het trefwoord spraak in de editor wilt testen, drukt u op de KeyCode die is gedefinieerd in stap 6 (F5) om de gebeurtenis herkende spraak trefwoord te simuleren.

Statusevenementen voor spraakwoorden ophalen

Gebeurtenisconfiguratietype voor de SpeechKeyword-status: 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"); 
});

Aangepaste statussen

Een aangepaste status maken via Inspector

De aangepaste status die via inspector is gemaakt, wordt geïnitialiseerd met de standaardconfiguratie voor statusgebeurtenissen. De standaard gebeurtenisconfiguratie voor een aangepaste status is van het type StateEvents en bevat de gebeurtenissen OnStateOn en OnStateOff.

  1. Navigeer naar Aangepaste status maken in de inspector voor Interactief element.

    Een aangepaste status maken

  2. Voer de naam van de nieuwe status in. Deze naam moet uniek zijn en mag niet hetzelfde zijn als de bestaande kernstatussen.

    De naam van een nieuwe aangepaste status invoeren

  3. Selecteer Statusnaam instellen om toe te voegen aan de statuslijst.

    Aangepaste status toevoegen aan statuslijst

    Deze aangepaste status wordt geïnitialiseerd met de standaardgebeurtenisconfiguratie StateEvents die de OnStateOn gebeurtenissen en OnStateOff bevat. Als u een aangepaste gebeurtenisconfiguratie wilt maken voor een nieuwe status, raadpleegt u: Een aangepaste status maken met een aangepaste gebeurtenisconfiguratie.

    Nieuwe status die wordt weergegeven in het interactieve elementonderdeel

Een aangepaste status maken 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");
});

Een aangepaste status maken met een aangepaste gebeurtenisconfiguratie

Voorbeeldbestanden voor een aangepaste status met de naam Toetsenbord bevinden zich hier: MRTK\SDK\Experimental\InteractiveElement\Examples\Scripts\CustomStateExample

De volgende stappen doorlopen een bestaand voorbeeld van het maken van een aangepaste status gebeurtenisconfiguratie en ontvangerbestanden.

  1. Denk aan een staatsnaam. Deze naam moet uniek zijn en mag niet hetzelfde zijn als de bestaande kernstatussen. In dit voorbeeld wordt de naam van de status Toetsenbord.

  2. Maak twee .cs-bestanden met de naam statusnaam + 'Ontvanger' en statusnaam + 'Gebeurtenissen'. De naamgeving van deze bestanden wordt intern in overweging genomen en moet de statusnaam + gebeurtenis/ontvanger-conventie volgen.

    Toetsenbordstatusscripts

  3. Zie de bestanden KeyboardEvents.cs en KeyboardReceiver.cs voor meer informatie over de bestandsinhoud. Nieuwe gebeurtenisconfiguratieklassen moeten overnemen van BaseInteractionEventConfiguration en nieuwe gebeurtenisontvangerklassen moeten overnemen van BaseEventReceiver. Voorbeelden van statusinstellingen voor de toetsenbordstatus bevinden zich in het CustomStateSettingExample.cs bestand.

  4. Voeg de status toe aan het interactieve element met behulp van de statusnaam. De statusnaam wordt herkend als er bestanden voor gebeurtenisconfiguratie en gebeurtenisontvanger bestaan. De eigenschappen in het configuratiebestand voor aangepaste gebeurtenissen moeten worden weergegeven in de inspector.

    Aangepaste status toevoegen aan interactief elementAangepaste status die wordt herkend in het interactieve element

  5. Zie de bestanden op deze paden voor meer voorbeelden van gebeurtenisconfiguratie en gebeurtenisontvangerbestanden:

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

Voorbeeldscène

De voorbeeldscène voor Interactive Element + State Visualizer bevindt zich hier: MRTK\SDK\Experimental\InteractiveElement\Examples\InteractiveElementExampleScene.unity

Voorbeeldscène met interactive element en state visualizer

Samendrukbare knop

De voorbeeldscène bevat prefabs met de naam CompressableButton en CompressableButtonToggle, deze prefabs weerspiegelen het gedrag van de PressableButtonHoloLens2 knoppen, die zijn samengesteld met behulp van interactief element en de status visualiseren. Het CompressableButton onderdeel is momenteel een combinatie van PressableButton + PressableButtonHoloLens2 met BaseInteractiveElementals basisklasse.

State Visualizer [Experimenteel]

Het onderdeel State Visualizer voegt animaties toe aan een object op basis van de statussen die zijn gedefinieerd in een gekoppeld onderdeel interactief element. Dit onderdeel maakt animatie-assets, plaatst deze in de map MixedRealityToolkit.Generated en maakt vereenvoudigde instellingen voor animatiesleutelframes mogelijk door Animatable-eigenschappen toe te voegen aan een doelgameobject. Als u animatie-overgangen tussen statussen wilt inschakelen, wordt er een Activa van De Entertainer-controller gemaakt en wordt een standaardstatusmachine gegenereerd met bijbehorende parameters en eventuele statusovergangen. De statusmachine kan worden weergegeven in het venster Van Unity-editor.

State Visualizer en Unity Animation System

State Visualizer maakt momenteel gebruik van het Unity Animation System.

Wanneer u op de knop Nieuwe animatieclips genereren in State Visualizer drukt, worden nieuwe animatieclipassets gegenereerd op basis van de statusnamen in Interactive Element en worden deze in de map MixedRealityToolkit.Generated geplaatst. De eigenschap Animatieclip in elke statuscontainer is ingesteld op de bijbehorende animatieclip.

Animatieclips in het onderdeel Status visualiseren

Er wordt ook een Animator State Machine gegenereerd om vloeiende overgangen tussen animatieclips te beheren. De statusmachine maakt standaard gebruik van alle statussen om overgangen tussen elke status in het interactieve element toe te staan.

Statusvisualiseringen die in de planner worden geactiveerd , worden ook gegenereerd voor elke status. De triggerparameters worden gebruikt in State Visualizer om een animatie te activeren.

Unity State Machine

Runtime-beperkingen

State Visualizer moet via inspector aan een object worden toegevoegd en kan niet via script worden toegevoegd. De eigenschappen die de AnimatorStateMachine/AnimationController wijzigen, bevinden zich in een editornaamruimte (UnityEditor.Animations) die worden verwijderd wanneer de app wordt gebouwd.

State Visualizer gebruiken

  1. Een kubus maken

  2. Interactief element koppelen

  3. Status visualiseren koppelen

  4. Selecteer Nieuwe animatieclips genereren

    Nieuwe animatieclips genereren

    Gegenereerde animatieclips weergeven in onderdelen van visualizer en interactieve elementen

  5. Selecteer in de container Focusstatus de optie Doel toevoegen

    Doel van status visualiseren toevoegen

  6. Het huidige gameobject naar het doelveld slepen

    Doel van status visualiseren instellen

  7. De uitvouwbare eigenschappen van kubus openen

  8. Selecteer het vervolgkeuzemenu van de eigenschap Animatable en selecteer Kleur

    Kleur van status visualiseren instellen

  9. Selecteer De eigenschap Color Animatable toevoegen

    De eigenschap visualiseerkleur animatable selecteren

  10. Een kleur kiezen

    Een visualiseerkleur kiezen in het kleurenwiel

  11. Druk op Afspelen en bekijk de overgangskleurwijziging

    Voorbeeld van overgangskleurwijziging met virtuele handinteractie

Eigenschappen van animatie

Het primaire doel van de eigenschappen van Animatable is het vereenvoudigen van de keyframe-instelling voor animatieclips. Als een gebruiker bekend is met het Unity Animation System en de voorkeur geeft aan het rechtstreeks instellen van hoofdframes voor de gegenereerde animatieclips, kan deze eenvoudigweg geen Animatie-eigenschappen toevoegen aan een doelobject en de clip openen in het animatievenster van Unity (Windows > Animation > Animation).

Als u de animatable-eigenschappen voor animatie gebruikt, wordt het curvetype ingesteld op EaseInOut.

Huidige animatable-eigenschappen:

Verschuiving van schaal

De eigenschap Scale Offset Animatable neemt de huidige schaal van het object en voegt de gedefinieerde offset toe.

Verschuiving schalen met virtuele handinteractie

Verschuiving van positie

De eigenschap Position Offset Animatable neemt de huidige positie van het object en voegt de gedefinieerde offset toe.

Positieverschil met virtuele handinteractie

Kleur

De eigenschap Color Animatable vertegenwoordigt de hoofdkleur van een materiaal als het materiaal een hoofdkleureigenschap heeft. Deze eigenschap animeert de material._Color eigenschap.

Focuskleurwijziging met virtuele handinteractie

Arceringskleur

De eigenschap Shader Color Animatable verwijst naar een arceringseigenschap van het type kleur. Een eigenschapsnaam is vereist voor alle shader-eigenschappen. In de onderstaande GIF ziet u animaties voor een arceringskleureigenschap met de naam Fill_Color die niet de hoofdkleur van het materiaal is. Bekijk de veranderende waarden in de materiaalcontrole.

Schaduwkleur met virtuele handinteractie

Arceringsvijver

De eigenschap Shader Float Animatable verwijst naar een arceringseigenschap van het type float. Een eigenschapsnaam is vereist voor alle shader-eigenschappen. Bekijk in de onderstaande GIF de veranderende waarden in de materiaalcontrole voor de eigenschap Metallic.

Shader float met virtuele hand interactie

Arceringsvector

De eigenschap Shader Vector Animatable verwijst naar een arceringseigenschap van het type Vector4. Een eigenschapsnaam is vereist voor alle shader-eigenschappen. Bekijk in de onderstaande GIF de veranderende waarden in de materiaalcontrole voor de eigenschap Tegelen (Main Tex_ST).

Arceringsvector met virtuele handinteractie

De eigenschapsnamen van animatable shader zoeken

  1. Navigeer naar Vensteranimatieanimatie >>

  2. Zorg ervoor dat het object met state visualizer is geselecteerd in de hiërarchie

  3. Een animatieclip selecteren in het venster Animatie

  4. Selecteer Eigenschap toevoegen, open de uitvouwbare mesh-renderer

    Animatie-eigenschap toevoegen in het Venster Van De animatie

  5. Deze lijst bevat de namen van alle namen van de eigenschap Animatable

    Eigenschappen van mesh-rendereranimatie in het Venster Animator

Zie ook