Interaktivt element [experimentellt] – MRTK2

En förenklad centraliserad startpunkt för MRTK-indatasystemet. Innehåller tillståndshanteringsmetoder, händelsehantering och tillståndsinställningslogik för Core Interaction States.

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

Interaktiv elementkontroll

Under uppspelningsläget ger inspektören 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 inspektören ä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ärntillstånd

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

Aktuella kärntillstånd

Grundläggande tillstånd för nära och fjärran interaktion:

Kärntillstånd för nära interaktion:

Kärntillstånd för långt interaktion:

Andra kärntillstånd:

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

  1. Gå till Lägg till kärntillstånd i kontrollanten 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 det kärntillstånd som ska läggas till. Tillstånden i menyn sorteras efter interaktionstyp.

    Lägg till ett kärntillstånd via Inspector med valt tillstånd

  3. Öppna vikningen Händelsekonfiguration för att visa de händelser och egenskaper som är associerade med tillståndet.

    Lägga till ett kärntillstånd via Inspector med händelsekonfiguration

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

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

// 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 Interaktivt 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 aktiverat är tillståndsvärdet 1. Om tillståndet är inaktiverat är tillståndsvärdet 0.
  • Aktiv: Om tillståndet för närvarande är aktivt eller inte. Värdet för egenskapen Aktiv är sant när tillståndet är aktiverat, 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 artikulerad hand har direkt kontakt med ett annat spelobjekt, dvs. positionen den ledade handen är nära positionen för spelobjektet i världsrymden.
    • Far: Stöd för långt interaktion. Indata anses vara långt interaktion när direkt kontakt med spelobjektet inte krävs. Indata via styrenhetens stråle eller blick anses till exempel vara långt interaktionsindata.
    • 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 startpunkten för den serialiserade händelseprofilen.

Alla dessa egenskaper anges internt i som State Manager finns i Interaktivt element. Om du vill ändra tillstånd använder du följande hjälpmetoder:

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 är endast aktivt när alla andra tillstånd inte är aktiva. Om något annat tillstånd blir aktivt kommer standardtillståndet att inaktiveras internt.

Ett interaktivt element initieras med standard- och fokustillstånden som finns 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 betraktas som den mixade verkligheten 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 Poke Pointer anses interaktionen vara nära interaktion. Om den primära pekaren inte är poke-pekaren anses interaktionen vara långt interaktion. Fokustillståndet finns som standard i Interaktivt element.

Fokustillstånd beteendefokustillstånd med virtuell hand interaktion

Fokustillståndsinspektörens fokustillstånd i inpsector

Hämta händelser för fokustillstånd

Händelsekonfigurationstyp för fokustillstånd: 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

Fokusera nära och långt med interaktion med virtuella hand

Fokus nära tillstånd

Läget Fokus nära anges när en fokushändelse aktiveras och den primära pekaren är poke-pekaren, en indikation på nära interaktion.

Fokus nära tillstånd beteendefokus nära tillstånd med virtuell hand interaktion

Fokus nära tillståndsinspektörenFokus nära komponenten i inspektören

Hämta FocusNear State Events

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

Fokus, långt tillstånd

Tillståndet Fokus långt anges när den primära pekaren inte är Poke-pekaren. Till exempel anses standardkontrollantens strålpekare och GGV-pekaren (Blick, Gest, Röst) vara långt interaktionspekare.

Focus Far State BehaviorFocus state far with virtual hand interaction

Focus Far State InspectorFocus far component in the Inspector

Få fokus – händelser med långt tillstånd

Händelsekonfigurationstyp för FocusFar State: 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");
});

Pektillstånd

Touch-tillståndet är ett nära interaktionstillstånd som anges när en artikulerad hand rör vid objektet direkt. En direkt beröring innebär att den ledade handens pekfinger ligger mycket nära objektets världsposition. Som standard är en NearInteractionTouchableVolume 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 att identifiera Touch-händelser. Skillnaden mellan NearInteractionTouchableVolume och är att NearInteractionTouchableVolume identifierar en touch baserat på objektets kolliderare och NearInteractionTouchableidentifierar beröring inom ett definierat område NearInteractionTouchable i ett plan.

Touch State BehaviorTouch state with virtual hand interaction (Touch State Behavior Touch-tillstånd med interaktion med virtuell hand)

Touch State InspectorTouch state-komponenten i inspektören

Hämta Touch State-händelser

Händelsekonfigurationstyp för Touch State: 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");
});

Välj långt tillstånd

Tillståndet Välj långt är det IMixedRealityPointerHandler som visas. Det här tillståndet är ett långt interaktionstillstånd som identifierar långt interaktionstryck (lufttryckning) och som håller sig genom användning av långt interaktionspekare, till exempel standardkontrollantens strålpekare eller GGV-pekaren. Tillståndet Välj långt har ett alternativ under utfällbar händelsekonfiguration med namnet Global. Om Global är sant IMixedRealityPointerHandler registreras som en global indatahanterare. Fokus på ett objekt krävs inte för att utlösa indatasystemhändelser om en hanterare registreras som global. Om en användare till exempel vill veta när gesten air-tap/select utförs oavsett vilket objekt som är i fokus, anger du Global till sant.

Välj Beteende för långt tillståndVälj långt med virtuell handinteraktion

Välj Inspektör för långt tillståndVälj långt komponent i inspektören

Hämta Select Far State Events

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

Klickat på tillstånd

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

Anteckning

Den visuella feedbacken i inspektören baserat på tillståndsaktiviteten finns inte för det klickade tillståndet eftersom det är aktiverat och sedan inaktiverat omedelbart.

Klickadepå Tillståndsbeteende Klickat på tillstånd med virtuella handinteraktioner

Klickade på TillståndskontrollKlicka på tillståndskomponent i inspektören

Exempel på tillstånd som klickats nära och långt
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 interaktionstouch ska utlösa ett klick på ett objekt, lägger de till TriggerClickedState() metoden som en lyssnare i pektillståndet.

Nära och långt tillstånd med virtuella handinteraktioner

Hämta klickade tillståndshändelser

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

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

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

Växla på- och växlingsläge

Växlingslägena På och Växla av är ett par och båda måste finnas för växlingsbeteende. 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 växlingsläget Av aktivt vid start, vilket innebär att växlingsknappen initieras till av. Om en användare vill att läget Växla på ska vara aktivt vid start, anger IsSelectedOnStart du värdet true i läget Växla på.

Växla På och Växla från tillståndsbeteendeVäxlingsknapp till och från med virtuella handinteraktioner

Växla på och växla fråntillståndskontrollsväxlingskomponenten i inspektören

Exempel på växlingstillstånd nära och långt
På samma sätt som med inställningen Klickat tillstånd kan växlingslägesinställningen ha flera startpunkter med hjälp av interactiveElement.SetToggleStates() metoden . Om en användare till exempel vill att touch ska vara en ytterligare startpunkt för att ange växlingslägen lägger de till SetToggleStates() metoden till en av händelserna i Touch-tillståndet.

Nära och långt växla med interaktioner med virtuella hand

Aktivera och inaktivera tillståndshändelser

Händelsekonfigurationstyp för växlingsläge: ToggleOnEvents
Händelsekonfigurationstyp för växlingsläge: 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");
});

Nyckelordstillstånd för tal

Nyckelordstillståndet tal lyssnar efter nyckelorden som definierats i Mixed Reality Speech-profilen. Alla nya nyckelord måste registreras i talkommandoprofilen före körning (steg nedan).

Speech Keyword State BehaviorSpeech-nyckelord med virtuell interaktion

Nyckelordskomponent för Speech Keyword State InspectorSpeech i inspektören

Anteckning

Nyckelordstillståndet tal utlöstes i redigeraren genom att trycka på F5-tangenten i gif-filen ovan. Konfigurering i redigeringstestning för tal beskrivs stegen nedan.

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 KeyCode till F5 (eller en annan KeyCode) för att tillåta testning i redigeraren.

    Konfigurera nyckelord för tal i MRTK-profilen

  7. Gå tillbaka till inspektören för nyckelordstillstånd för interaktivt element och välj Lägg till nyckelord

    Lägga till nyckelord i komponenten interaktivt element

    Validering och registrering av nyckelord

  8. Ange det nya nyckelordet som just registrerades i talprofilen

    Ange nytt nyckelord för tal

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

Hämta händelser för nyckelordstillstånd för tal

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 Inspector initieras med standardkonfigurationen för tillståndshändelser. 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 kontrollanten 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ärntillstånden.

    Ange namnet på ett nytt anpassat tillstånd

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

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

    Det här anpassade tillståndet initieras med standardhändelsekonfigurationen StateEventsOnStateOn som innehåller 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 den interaktiva elementkomponenten

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

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

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 statsnamn. Det här namnet måste vara unikt och får inte vara samma som de befintliga kärntillstånden. I det här exemplet kommer tillståndsnamnet att vara Tangentbord.

  2. Skapa två .cs-filer med namnet state name + "Receiver" och state name + "Events". Namngivning av dessa filer beaktas internt och måste följa tillståndsnamnet + händelse-/mottagarkonventionen.

    Tangentbordstillståndsskript

  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ällning för tangentbordstillstånd finns i CustomStateSettingExample.cs filen.

  4. Lägg till tillståndet i Interaktivt element med tillståndsnamnet. Tillståndsnamnet identifieras om det finns filer för händelsekonfiguration och händelsemottagare. Egenskaperna i den anpassade händelsekonfigurationsfilen bör visas i inspektören.

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

  5. Fler exempel på händelsekonfigurations- och händelsemottagarfiler finns i filerna på dessa 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 tillståndsvisualiserare

Komprimerad knapp

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

Tillståndsvisualiserare [experimentell]

Komponenten State Visualizer lägger till animeringar i ett objekt baserat på tillstånden som definierats i en länkad interactive element-komponent. Den här komponenten skapar animeringstillgångar, placerar dem i mappen MixedRealityToolkit.Generated och aktiverar förenklad animeringsnyckelram genom att lägga till animatable-egenskaper i ett målspelsobjekt. Om du vill 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 Unitys animatörsfönster.

State Visualizer och Unity Animation System

Tillståndsvisualiseraren använder för närvarande Unity Animation System.

När knappen Skapa nya animeringsklipp i Tillståndsvisualiseraren trycks ned genereras nya animeringsklippstillgångar baserat på tillståndsnamnen i Interaktivt element och placeras i mappen MixedRealityToolkit.Generated. Egenskapen Animeringsklipp i varje tillståndscontainer är inställd på det associerade animeringsklippet.

Animeringsklipp i tillståndsvisualiserarkomponent

En Animator State Machine 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 interaktivt element.

Tillståndsvisualiserare som utlöses i animatören genereras också för varje tillstånd. Utlösarparametrarna används i Tillståndsvisualiseraren för att utlösa en animering.

Unity-tillståndsdator

Körningsbegränsningar

Tillståndsvisualiseraren måste läggas till i ett objekt via Inspector och kan inte läggas till via skript. Egenskaperna som ändrar AnimatorStateMachine/AnimationController finns i ett redigeringsnamnområde (UnityEditor.Animations) som tas bort när appen skapas.

Så här använder du tillståndsvisualiseraren

  1. Skapa en kub

  2. Koppla interaktivt element

  3. Bifoga tillståndsvisualiserare

  4. Välj Generera nya animeringsklipp

    Generera nya animeringsklipp

    Visar genererade animeringsklipp i visualiserare och interaktiva elementkomponenter

  5. I containern Fokustillstånd väljer du Lägg till mål

    Lägga till mål för tillståndsvisualiserare

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

    Ange mål för tillståndsvisualiserare

  7. Öppna utfällbara kubegenskaper

  8. Välj den animatable-egenskapens nedrullningsbara meny och välj Färg

    Ange statusvisualiserarfärg

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

    Välja visualiseringsfärgens animatable-egenskap

  10. Välj en färg

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

  11. Tryck på spela och observera övergångsfärgen ändras

    Exempel på ändring av övergångsfärg med virtuell handinteraktion

Animatable-egenskaper

Det primära syftet med animatable-egenskaperna är att förenkla inställningen för animeringsklippets nyckelbildruta. Om en användare är bekant med Unity Animation System och föredrar att ange nyckelrutor direkt på de genererade animeringsklippen kan de helt enkelt inte lägga till animatable-egenskaper i ett målobjekt och öppna klippet i Unitys animeringsfönster (Windows > Animation > Animation).

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

Aktuella animatable-egenskaper:

Skalningsförskjutning

Egenskapen Skalningsförskjutning animatable tar objektets aktuella skala och lägger till den definierade förskjutningen.

Skalningsförskjutning med interaktion med virtuell hand

Positionsförskjutning

Egenskapen Animatable för positionsförskjutning tar objektets aktuella position och lägger till den definierade förskjutningen.

Positionsförskjutning med interaktion med virtuell hand

Färg

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

Fokusfärgen ändras med interaktion med virtuell hand

Skuggningsfärg

Egenskapen Shader Color Animatable refererar till en skuggningsegenskap av typen färg. Ett egenskapsnamn krävs för alla skuggningsegenskaper. Gif-filen nedan visar hur du animerar en skuggningsfärgegenskap med namnet Fill_Color som inte är den huvudsakliga materialfärgen. Observera de ändrade värdena i materialkontrollen.

Färgnyans med interaktion med virtuell hand

Shader Float

Egenskapen Shader Float Animatable refererar till en shader-egenskap av typen float. Ett egenskapsnamn krävs för alla skuggningsegenskaper. Observera de ändrade värdena i materialinspektören för egenskapen Metallic i gif-filen nedan.

Shader float med interaktion med virtuell hand

Skuggningsvektor

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

Shader-vektor med interaktion med virtuell hand

Så här hittar du egenskapsnamn för Animatable Shader

  1. Navigera till animering av > fönster >

  2. Kontrollera att objektet med Tillståndsvisualiseraren är markerat i hierarkin

  3. Välj ett animeringsklipp i animeringsfönstret

  4. Välj Lägg till egenskap, öppna mesh-återgivningsutvikningen

    Lägga till animeringsegenskap i Animator-fönstret

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

    Animeringsegenskaper för mesh-renderare i Animator-fönstret

Se även