Interaktivt element [experimentell]

En förenklad centraliserad startpunkt för MRTK-indatasystemet. Innehåller tillståndshanteringsmetoder, händelsehantering och tillståndsinställningslogik för kärninteraktionstillstånd.

Interactive Element är en experimentell funktion som stöds i Unity 2019.3 och upp eftersom den använder en funktion som är ny i Unity 2019.3: Serialisera referens.

Kontroll av interaktivt element

Under uppspelningsläget ger kontroll av interaktivt element visuell feedback som anger om det aktuella tillståndet är aktivt eller inte. Om ett tillstånd är aktivt markeras det med en cyanfärg. Om tillståndet inte är aktivt ändras inte färgen. Talen bredvid tillstånden i kontrollanten är tillståndsvärdena. Om tillståndet är aktivt är värdet 1, om tillståndet inte är aktivt är värdet 0.

Interaktivt element med interaktion med virtuell hand

Kärnstater

Interaktivt element innehåller kärn tillstånd och stöder tillägg av anpassade tillstånd. Ett kärntillstånd är ett tillstånd som redan har tillståndsinställningslogiken definierad i BaseInteractiveElement . Följande är en lista över de aktuella indatadrivna kärn tillstånden:

Aktuella kärnstater

Grundläggande tillstånd för nära och långt interaktion:

Kärn tillstånd nära interaktion:

Långt interaktionens kärn tillstånd:

Andra kärnstater:

Så här lägger du till ett kärntillstånd via Inspector

  1. Gå till Lägg till kärntillstånd i kontroll för interaktivt element.

    Lägga till ett kärntillstånd via Inspector

  2. Välj knappen Välj tillstånd för att välja kärntillstånd att lägga till. Tillstånden i menyn sorteras efter interaktionstyp.

    Lägga till ett kärntillstånd via Kontroll med valt tillstånd

  3. Öppna händelsekonfigurationens utfällning för att visa de händelser och egenskaper som är associerade med tillståndet.

    Lägga till en kärntillstånd via Kontroll med händelsekonfiguration

Lägga till ett kärntillstånd via skript

Använd metoden AddNewState(stateName) för att lägga till ett kärntillstånd. En lista över tillgängliga kärntillståndsnamn finns i CoreInteractionState uppräkning.

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

interactiveElement.AddNewState("SelectFar");

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

Tillstånd intern struktur

Tillstånden i Interactive Element är av typen InteractionState . En InteractionState innehåller följande egenskaper:

  • Namn: Namnet på tillståndet.
  • Värde: Tillståndsvärdet. Om tillståndet är på är tillståndsvärdet 1. Om tillståndet är inaktiverat är tillståndsvärdet 0.
  • Aktiv: Oavsett om tillståndet är aktivt eller inte. Värdet för egenskapen Aktiv är true när tillståndet är på, falskt om tillståndet är inaktiverat.
  • Interaktionstyp: Interaktionstypen för ett tillstånd är den typ av interaktion som ett tillstånd är avsett för.
    • None: Stöder inte någon form av indatainteraktion.
    • Near: Stöd för nära interaktion. Indata anses vara nära interaktion när en tydligt hand har direkt kontakt med ett annat spelobjekt, det vill säga den position som den formulerade handen är nära spelobjektets position i rymden.
    • Far: Långt interaktionsstöd. Indata anses vara interaktion långt ifrån när direkt kontakt med spelobjektet inte krävs. Indata via kontrollant ray eller blick anses till exempel vara långt interaktionsinmatning.
    • NearAndFar: Omfattar både nära och långt interaktionsstöd.
    • Other: Stöd för pekaroberoende interaktion.
  • Händelsekonfiguration: Händelsekonfigurationen för ett tillstånd är den serialiserade händelseprofilens startpunkt.

Alla dessa egenskaper anges internt i i State Manager det interaktiva elementet. Använd följande hjälpmetoder för att ändra tillstånd:

Hjälpmetoder för tillståndsinställning

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

Att hämta händelsekonfigurationen för ett tillstånd är specifikt för själva tillståndet. Varje kärntillstånd har en specifik händelsekonfigurationstyp som beskrivs nedan under avsnitten som beskriver varje kärntillstånd.

Här är ett generaliserat exempel på hur du hämtar ett tillstånds händelsekonfiguration:

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

Standardtillstånd

Standardtillståndet finns alltid på ett interaktivt element. Det här tillståndet aktiveras bara när alla andra tillstånd inte är aktiva. Om något annat tillstånd blir aktivt ställs standardtillståndet in på internt.

Ett interaktivt element initieras med standard- och fokustillstånden i tillståndslistan. Standardtillståndet måste alltid finnas i tillståndslistan.

Hämta standardtillståndshändelser

Händelsekonfigurationstyp för standardtillståndet: 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");
});

Fokustillstånd

Fokustillståndet är ett nära och långt interaktionstillstånd som kan ses som en mixad verklighet som motsvarar hovring. Den särskiljande faktorn mellan nära och långt interaktion för fokustillståndet är den aktuella aktiva pekartypen. Om pekartypen för fokustillståndet är Den här pekaren anses interaktionen vara nära interaktionen. Om den primära pekaren inte är Den här pekaren anses interaktionen vara långt ifrån interaktionen. Fokustillståndet finns i interaktivt element som standard.

Fokustillståndsbeteende  Fokustillstånd med interaktion med virtuell hand

Focus State Inspector  Fokustillstånd i inpsektorn

<a name="getting-focus-state-events">Hämta fokustillståndshändelser

Händelsekonfigurationstyp för fokustillståndet: FocusEvents

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

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

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

Beteendet Fokus nära kontra Fokus långt

Fokusera nära och långt med interaktion med virtuella händer

Fokus nära tillstånd

Statusen Fokus nära anges när en fokushändelse höjs och den primära pekaren är the Pointer, en indikation på nära interaktion.

Fokusera beteende för nära tillstånd  Fokusera nära tillstånd med interaktion med virtuell hand

Fokus Nära State Inspector  Fokusera nära komponenten i Kontroll

<a name="getting-focusnear-state-events">Hämta fokusEnär tillståndshändelser

Händelsekonfigurationstyp för FocusNear State: FocusEvents

FocusEvents focusNearEvents = interactiveElement.GetStateEvents<FocusEvents>(&quot;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");
});

Fokus långt state

Statusen Fokus långt anges när den primära pekaren inte är pekaren Fördr. Till exempel anses standardkontrollantens ray-pekare och GGV-pekaren (Blick, Gest, Röst) vara långt interaktionspekare.

Focus Far State Behavior (Fokus– långt tillståndsbeteende)  Fokustillstånd långt med interaktion med virtuella händer

Focus Far State Inspector  Komponenten Fokus långt i kontrollanten

<a name="getting-focus-far-state-events">Hämta händelser för fokus långt tillstånd

Händelsekonfigurationstyp för FocusFar State: FocusEvents

FocusEvents focusFarEvents = interactiveElement.GetStateEvents<FocusEvents>(&quot;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");
});

Touch State

Touch-tillståndet är ett nära interaktionstillstånd som anges när en tydligt hand vidrör objektet direkt. En direkttouch innebär att den ledade handens index finger är mycket nära objektets världsposition. Som standard är NearInteractionTouchableVolume en komponent kopplad till objektet om Touch-tillståndet läggs till i tillståndslistan. Förekomsten av en NearInteractionTouchableVolume - eller NearInteractionTouchable -komponent krävs för identifiering av Touch-händelser. Skillnaden mellan och är att identifierar en touch baserat på kollideren av objektet och identifierar beröring inom ett NearInteractionTouchableVolume definierat område i ett NearInteractionTouchable NearInteractionTouchableVolume NearInteractionTouchable plan.

Touch State-beteende  Touch-tillstånd med interaktion med virtuell hand

Touch State Inspector  Komponenten Touch State i Kontroll

<a name="getting-touch-state-events">Hämta Touch State-händelser

Händelsekonfigurationstyp för Touch State: TouchEvents

TouchEvents touchEvents = interactiveElement.GetStateEvents<TouchEvents>(&quot;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");
});

Välj Långt tillstånd

Tillståndet Välj långt är IMixedRealityPointerHandler surfaced. Det här tillståndet är ett långt interaktionstillstånd som identifierar långt interaktionsklick (tryck i luften) och som håller genom användning av långt interaktionspekare, till exempel standardkontrollantens ray pointer eller GGV-pekaren. Select Far-tillståndet har ett alternativ under händelsekonfigurationsde foldouten med namnet Global . Om Global är sant registreras som en global IMixedRealityPointerHandler indatahanterare. Fokus på ett objekt krävs inte för att utlösa händelser i indatasystemet om en hanterare är registrerad som global. Om en användare till exempel vill veta när som helst då gesten för att trycka/välja ska utföras oavsett vilket objekt som är i fokus anges Global till sant.

Välj Beteende för långt tillstånd  Välj långt med interaktion med virtuell hand

Välj Far State Inspector  Välj komponenten långt i Kontroll

<a name="getting-select-far-state-events">Hämta händelser för att välja långt tillstånd

Händelsekonfigurationstyp för SelectFar-tillstånd: SelectFarEvents

SelectFarEvents selectFarEvents = interactiveElement.GetStateEvents<SelectFarEvents>(&quot;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");
});

Klickat på Tillstånd

Det klickade tillståndet utlöses av ett långt interaktionsklick (välj långt tillstånd) som standard. Det här tillståndet är internt inkopplat till på, anropar OnClicked-händelsen och stängs sedan omedelbart av.

Anteckning

Den visuella feedbacken i kontroll baserat på tillståndsaktivitet finns inte för tillståndet Klickad eftersom den är påslagen och sedan av omedelbart.

Klickat på Tillståndsbeteende  Klickat tillstånd med interaktioner med virtuella händer

Klickade på Tillståndskontroll  Klicka på tillståndskomponenten i Kontroll

Exempel på när- och långt klickat tillstånd
Det klickade tillståndet kan utlösas via ytterligare startpunkter med hjälp av interactiveElement.TriggerClickedState() metoden . Om en användare till exempel vill att en nära interaktionstryckning även ska utlösa ett klick på ett objekt lägger de till metoden som en lyssnare i TriggerClickedState() touch-tillstånd.

Nära och långt tillstånd med interaktioner med virtuella händer

<a name="getting-clicked-state-events">Hämta klickade tillståndshändelser

Händelsekonfigurationstyp för klickat tillstånd: ClickedEvents

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

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

Växla på och inaktivera tillstånd

Växlingsknappen på och av-tillstånden är ett par och båda måste finnas för växlingsbeteendet. Som standard utlöses lägena Växla på och Växla av genom ett långt interaktionsklick (Välj långt tillstånd). Som standard är läget Växla av aktivt vid start, vilket innebär att växlingsknappen initieras till av. Om en användare vill att växlingsknappen på tillstånd ska vara aktiv vid start, går du till växlingsknappen på tillstånd inställd IsSelectedOnStart på sant.

Växla På och Växla från tillståndsbeteende  Aktivera och inaktivera med interaktioner med virtuella händer

Växlingsknapp på och växlingsknapp av tillståndskontroll  Växla komponent i Kontroll

Exempel på växlings tillstånd nära och långt
På liknande sätt som med klickat tillstånd kan växlingstillståndsinställningen ha flera startpunkter med hjälp av interactiveElement.SetToggleStates() metoden . Om en användare till exempel vill trycka på som ytterligare en startpunkt för att ange växlingstillstånd, lägger de till metoden till en av händelserna SetToggleStates() i Touch-tillståndet.

Växling nära och långt med interaktioner med virtuella händer

<a name="getting-toggle-on-and-toggle-off-state-events">Hämta växlingsknapp på och växling av tillståndshändelser

Händelsekonfigurationstyp för växlingstillståndet: ToggleOnEvents
Händelsekonfigurationstyp för Växlingstillstånd: ToggleOffEvents

// Toggle On Events
ToggleOnEvents toggleOnEvent = interactiveElement.GetStateEvents<ToggleOnEvents>(&quot;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");
});

Nyckelordstillstånd för tal

Speech Keyword-tillståndet lyssnar efter nyckelorden som definierats i Mixed Reality Speech Profile. Alla nya nyckelord MÅSTE registreras i talkommandoprofilen före körning (stegen nedan).

Beteende för speech-nyckelordstillstånd  Speech-nyckelord med virtuell interaktion

Speech Keyword State Inspector  Nyckelordskomponenten Speech i Kontroll

Anteckning

Speech Keyword-tillståndet utlöstes i redigeraren genom att trycka på F5-tangenten i gif-bilden ovan. Stegen nedan beskriver hur du ställer in i redigeringstestning för tal.

Registrera ett talkommando/nyckelord

  1. Välj spelobjektet MixedRealityToolkit

  2. Välj Kopiera och anpassa den aktuella profilen

  3. Gå till avsnittet Indata och välj Klona för att aktivera ändring av indataprofilen

  4. Rulla ned till avsnittet Tal i indataprofilen och klona talprofilen

    Nyckelordsprofil för tal i MRTK-spelobjektet

  5. Välj Lägg till ett nytt talkommando

    Lägga till ett nytt talnyckelord i MRTK-profilen

  6. Ange det nya nyckelordet. Valfritt: Ändra Nyckelkod till F5 (eller någon annan nyckelkod) så att du kan testa i redigeraren.

    Konfigurera speech-nyckelord i MRTK-profilen

  7. Gå tillbaka till tillståndskontrollen för interaktivt elements talnyckelord och välj Lägg till nyckelord

    Lägga till nyckelord i komponenten för interaktiva element

    Nyckelordsvalidering och registrering

  8. Ange det nya nyckelordet som precis registrerades i talprofilen

    Ange nytt nyckelord för tal

Om du vill testa speech keyword-tillståndet i redigeraren trycker du på den nyckelkod som definierades i steg 6 (F5) för att simulera den identifierade händelsen för speech-nyckelordet.

Hämta tillståndshändelser för speech-nyckelord

Händelsekonfigurationstyp för SpeechKeyword-tillståndet: 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"); 
});

Anpassade tillstånd

Så här skapar du ett anpassat tillstånd via Inspector

Det anpassade tillstånd som skapas via kontroll initieras med standardtillståndshändelsekonfigurationen. Standardhändelsekonfigurationen för ett anpassat tillstånd är av typen StateEvents och innehåller händelserna OnStateOn och OnStateOff.

  1. Gå till Skapa anpassat tillstånd i kontroll för interaktivt element.

    Skapa ett anpassat tillstånd

  2. Ange namnet på det nya tillståndet. Det här namnet måste vara unikt och får inte vara samma som de befintliga kärn tillstånden.

    Ange namnet på ett nytt anpassat tillstånd

  3. Välj Ange tillståndsnamn att lägga till i tillståndslistan.

    Lägga till anpassat tillstånd i tillståndslistan

    Det här anpassade tillståndet initieras med StateEvents standardhändelsekonfigurationen som innehåller OnStateOn händelserna och OnStateOff . Information om hur du skapar en anpassad händelsekonfiguration för ett nytt tillstånd finns i: Skapa ett anpassat tillstånd med en anpassad händelsekonfiguration.

    Nytt tillstånd som visas i komponenten för interaktivt element

<a name="how-to-create-a-custom-state-via-script">Så här skapar du ett anpassat tillstånd via skript

interactiveElement.AddNewState(&quot;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");
});

Skapa ett anpassat tillstånd med en anpassad händelsekonfiguration

Exempelfiler för ett anpassat tillstånd med namnet Tangentbord finns här: MRTK\SDK\Experimental\InteractiveElement\Examples\Scripts\CustomStateExample

Följande steg går igenom ett befintligt exempel på hur du skapar en händelsekonfiguration för anpassat tillstånd och mottagarfiler.

  1. Tänk på ett tillståndsnamn. Det här namnet måste vara unikt och får inte vara samma som de befintliga kärn tillstånden. I det här exemplet ska delstatsnamnet vara Tangentbord.

  2. Skapa två .cs-filer med namnet tillståndsnamn + "Mottagare" och delstatsnamn + "Händelser". Namngivningen av dessa filer beaktas internt och måste följa tillståndsnamnet + händelse-/mottagarkonventionen.

    Skript för tangentbordstillstånd

  3. Mer information om filinnehåll finns i filerna KeyboardEvents.cs och KeyboardReceiver.cs. Nya händelsekonfigurationsklasser måste ärva från BaseInteractionEventConfiguration och nya händelsemottagareklasser måste ärva från BaseEventReceiver . Exempel på tillståndsinställningar för tangentbordstillstånd finns i CustomStateSettingExample.cs filen .

  4. Om du lägger till tillståndet till ett interaktivt element med hjälp av tillståndsnamnet identifieras tillståndsnamnet om det finns händelsekonfigurations- och händelsemottagarefiler. Egenskaperna i den anpassade händelsekonfigurationsfilen bör visas i kontrollanten.

    Lägga till anpassat tillstånd i det interaktiva elementet  Anpassat tillstånd som identifieras i det interaktiva elementet

  5. Fler exempel på händelsekonfigurations- och händelsemottagarefiler finns i filerna på följande sökvägar:

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

Exempelscen

Exempelscenen för Interactive Element + State Visualizer finns här: MRTK\SDK\Experimental\InteractiveElement\Examples\InteractiveElementExampleScene.unity

Exempelscen med interaktivt element och State Visualizer

Komprimerad knapp

Exempelscenen innehåller prefabs med namnet och , dessa prefabs speglar beteendet för knapparna som konstrueras med hjälp av CompressableButton CompressableButtonToggle PressableButtonHoloLens2 interaktivt element och State Visualizer. Komponenten CompressableButton är för närvarande en kombination av med som PressableButton + PressableButtonHoloLens2 BaseInteractiveElement basklass.

State Visualizer [experimentell]

Komponenten State Visualizer lägger till animeringar till ett objekt baserat på de tillstånd som definierats i en länkad interaktiv elementkomponent. Den här komponenten skapar animeringstillgångar, placerar dem i mappen MixedRealityToolkit.Generated och möjliggör en förenklad keyframe-inställning för animering genom att lägga till Animatable-egenskaper i ett målspelsobjekt. För att aktivera animeringsövergångar mellan tillstånd skapas en Animator Controller-tillgång och en standardtillståndsdator genereras med associerade parametrar och eventuella tillståndsövergångar. Tillståndsdatorn kan visas i Animator-fönstret i Unity.

State Visualizer och Unity Animering System

State Visualizer använder för närvarande Unity-animeringssystemet.

När du trycker på knappen Generera nya animeringsklipp i State Visualizer genereras nya animeringsklipptillgångar baserat på tillståndsnamnen i interactive-element och placeras i mappen MixedRealityToolkit.Generated. Egenskapen Animeringsklipp i varje tillståndscontainer är inställd på det associerade animeringsklippet.

Komponent för animeringsklipp i tillstånds visualiserare

En Dator för animatortillstånd genereras också för att hantera smidiga övergångar mellan animeringsklipp. Som standard använder tillståndsdatorn alla tillstånd för att tillåta övergångar mellan alla tillstånd i interaktiva element.

Tillstånds visualiserare som utlöses i animatorn genereras också för varje tillstånd. Utlösarparametrarna används i State Visualizer för att utlösa en animering.

Unity-tillståndsdator

Körningsbegränsningar

State Visualizer måste läggas till i ett objekt via Kontroll och kan inte läggas till via skript. De egenskaper som ändrar AnimatorStateMachine/AnimeringController finns i ett redigeringsprogramnamnområde ( ) som tas bort UnityEditor.Animations när appen byggs.

Så här använder du State Visualizer

  1. Skapa en kub

  2. Koppla interaktivt element

  3. Koppla State Visualizer

  4. Välj Generera nya animeringsklipp

    Generera nya animeringsklipp

    Visar genererade animeringsklipp i visualiserare och interaktiva elementkomponenter

  5. I fokustillståndscontainern väljer du Lägg till mål

    Lägga till mål för tillstånds visualiserare

  6. Dra det aktuella spelobjektet till målfältet

    Ange mål för tillstånds visualiserare

  7. Öppna utfällningen Animatable Properties (Animatable-egenskaper för kub)

  8. Välj den nedrullningsbara menyn Animatable-egenskap och välj Färg

    Ange färg för tillstånds visualiserare

  9. Välj Lägg till egenskapen Color Animatable

    Välja visualiseringsfärgens animatable-egenskap

  10. Välj en färg

    Välja en visualiseringsfärg från färghjulet

  11. Tryck på Spela upp och observera övergångsfärgändringen

    Exempel på övergångsfärgändring med interaktion med virtuella händer

Animatable-egenskaper

Det primära syftet med Animatable-egenskaper är att förenkla inställningen för nyckelramen för animeringsklipp. Om en användare är bekant med Unity Animering System och föredrar att direkt ange nyckelbildrutor för de genererade animeringsklippen kan de helt enkelt inte lägga till animatable-egenskaper till ett målobjekt och öppna klippet i Unity-fönstret Animering (Windows > Animering > Animering).

Om du använder animatable-egenskaperna för animering anges kurvans typ till EaseInOut.

Aktuella animatable-egenskaper:

Skalningsförskjutning

Egenskapen Scale Offset Animatable tar objektets aktuella skala och lägger till den definierade förskjutningen.

Skalningsförskjutning med interaktion med virtuella händer

Position Offset

Egenskapen Position Offset Animatable tar objektets aktuella position och lägger till den definierade förskjutningen.

Position offset med interaktion med virtuell hand

Färg

Egenskapen Color Animatable representerar huvudfärgen för ett material om materialet har en huvudsaklig färgegenskap. Den här egenskapen animerar material._Color egenskapen.

Fokusfärgändring med interaktion med virtuella händer

Shader-färg

Egenskapen Shader Color Animatable refererar till en shader-egenskap av typen color. Ett egenskapsnamn krävs för alla skuggaregenskaper. Gif-bilden nedan visar en färgegenskap för skuggare med Fill_Color som inte är den huvudsakliga materialfärgen. Observera de föränderliga värdena i materialkontrollen.

Skugga färg med interaktion med virtuella händer

Shader-flyttal

Egenskapen Shader Float Animatable refererar till en shader-egenskap av typen float. Ett egenskapsnamn krävs för alla skuggaregenskaper. I gif-bilden nedan ser du de ändrade värdena i materialkontrollen för egenskapen Försegenskapen .

Shader-flyttal med interaktion med virtuella händer

Shader Vector

Egenskapen Shader Vector Animatable refererar till en shader-egenskap av typen Vector4. Ett egenskapsnamn krävs för alla skuggaregenskaper. Observera de föränderliga värdena i materialkontrollen för egenskapen Tiling (Main Tex_ST) i gif-bilden nedan.

Shader-vektor med virtuell handinteraktion

Hitta animatable Shader-egenskapsnamn

  1. Gå till Window > Animering > Animering

  2. Kontrollera att objektet med State Visualizer är markerat i hierarkin

  3. Välj ett animeringsklipp i fönstret Animering

  4. Välj Lägg till egenskap, öppna Mesh Renderer-utfällningen

    Lägga till animeringsegenskap i animator-fönstret

  5. Den här listan innehåller namnen på alla animatable-egenskapsnamn

    Egenskaper för Mesh-återgivningsanimering i Animator-fönstret

Se även