Interaktív elem [kísérleti]

Egyszerűsített központosított belépési pont az MRTK bemeneti rendszerhez. Tartalmazza az állapotkezelési módszereket, az eseménykezelést és az alapvető interakciós állapotok állapotbeállítási logikáját.

Az Interaktív elem a Unity 2019.3-ban és újabb verziókban támogatott kísérleti funkció, mivel a Unity 2019.3 új funkcióját használja:A referencia szerializálása.

Interaktív elem vizsgálója

Lejátszás módban az Interaktív elem vizsgáló vizuális visszajelzést ad, amely jelzi, hogy az aktuális állapot aktív-e. Ha egy állapot aktív, cián színnel lesz kiemelve. Ha az állapot nem aktív, a szín nem változik. Az inspector államai melletti számok az állapotértékek. Ha az állapot aktív, akkor az érték 1, ha az állapot nem aktív, akkor az érték 0.

Interaktív elem virtuális kézi interakcióval

Alapvető államok

Az interaktív elem alapvető államokat tartalmaz, és támogatja az egyéni államok összeadását. Az alapállapot olyan, amely már rendelkezik az -ban definiált állapotbeállítási BaseInteractiveElement logikával. Az alábbi lista az aktuális bemenetvezérelt alapvető állapotokat sorolja fel:

Aktuális alapvető állapotok

Közel- és távoli interakciós alapvető államok:

Közel interakciós alapvető államok:

Távoli interakció alapvető állama:

Egyéb alapvető államok:

Alapállapot hozzáadása az Inspector segítségével

  1. Az Interaktív elem vizsgálóban lépjen az Alapvető állapot hozzáadása elemhez.

    Alapállapot hozzáadása az Inspector segítségével

  2. Válassza az Állapot kiválasztása gombot a hozzáadni kívánt alapvető állapot kiválasztásához. A menüben található államok interakciótípus szerint vannak rendezve.

    Magállapot hozzáadása az Inspectoron keresztül, az állapot kiválasztva

  3. Nyissa meg az Eseménykonfiguráció-kicsatát az állapothoz társított események és tulajdonságok megtekintéséhez.

    Alapállapot hozzáadása az Inspectoron keresztül eseménykonfigurációval

Alapállapot hozzáadása szkript használatával

Az AddNewState(stateName) alapállapot hozzáadásához használja a metódust. Az elérhető alapállapotnevek listájához használja az CoreInteractionState enumot.

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

interactiveElement.AddNewState("SelectFar");

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

Államok belső struktúrája

Az interaktív elemben az államok típusa InteractionState . Az InteractionState a következő tulajdonságokat tartalmazza:

  • Név:Az állapot neve.
  • Érték:Az állapotérték. Ha az állapot be van stb., az állapot értéke 1. Ha az állapot ki van kapcsolva, az állapot értéke 0.
  • Aktív:Azt határozza meg, hogy az állapot jelenleg aktív-e. Az Aktív tulajdonság értéke igaz, ha az állapot be van kapcsolva, hamis, ha az állapot ki van kapcsolva.
  • Interakció típusa:Az állapotok interakciótípusa az állapot által kívánt interakció típusa.
    • None: Nem támogatja a bemeneti interakciók semmilyen formáját.
    • Near: Közel interakció támogatása. A bemenet akkor minősül közel interakciónak, ha egy kéz közvetlen kapcsolatban áll egy másik játékobjektummal, azaz a kéz pozíciója közel van a játékobjektum pozíciójához a világűrben.
    • Far: Távoli interakció támogatása. A bemenet akkor tekinthető távoli interakciónak, ha nincs szükség közvetlen kapcsolatra a játék objektumával. A vezérlői sugáron vagy tekinteten keresztüli bemenet például távoli interakciós bemenetnek számít.
    • NearAndFar: Az interakciók közeli és távoli támogatását is magában foglalja.
    • Other: A mutató független interakció támogatása.
  • Eseménykonfiguráció:Az állapot eseménykonfigurációja a szerializált eseményprofil belépési pontja.

Ezek a tulajdonságok mind belsőleg vannak beállítva az State Manager Interaktív elemben található elemben. Az államok módosításához használja a következő segítő metódusokat:

Állapotbeállítási segítő metódusok

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

Egy állapot eseménykonfigurációjának lekért beállítása magára az állapotra jellemző. Minden alapvető állapothoz egy adott eseménykonfiguráció-típus van, amelyet az alábbiakban ismertetünk az egyes alapvető állapotokat ismertető szakaszokban.

Példa egy állapot eseménykonfigurációjának lekért általános példára:

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

Alapértelmezett állapot

Az Alapértelmezett állapot mindig jelen van egy interaktív elemen. Ez az állapot csak akkor lesz aktív, ha az összes többi állapot nem aktív. Ha bármely más állapot aktívvá válik, akkor az Alapértelmezett állapot belsőleg ki lesz kapcsolva.

Az interaktív elemek inicializálása az állapotlistában található Alapértelmezett és Fókusz állapotokkal van inicializálva. Az Alapértelmezett állapotnak mindig jelen kell lennie az állapotlistában.

Alapértelmezett állapotesemények lekért állapota

Eseménykonfiguráció típusa az alapértelmezett állapothoz: 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");
});

Fókuszállapot

A Fókusz állapot egy közeli és távoli interakciós állapot, amely a rámutatásnak megfelelő vegyes valóságként is fel lehet tekinteni. A fókuszállapot közeli és távoli interakciói közötti különbségi tényező az aktuális aktív mutatótípus. Ha a Fókusz állapot mutatótípusa a

Fókuszállapot-viselkedésfókuszállapota virtuális kézi interakcióval

Fókuszállapot vizsgálófókuszállapota az Inpsectorban

Fókuszállapot-események lekért

Eseménykonfiguráció típusa a Fókuszállapothoz: 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

Fókusz közel és távol a virtuális kéz interakcióval

Fókusz az államhoz közel

A Fókusz közel állapot akkor van beállítva, amikor fókuszesemény áll elő, és az elsődleges mutató a The Pointer ( Középpont) , amely közel interakcióra utal.

Focus Near State BehaviorFocus near state with virtual hand interaction

Focus Near State InspectorFocus near component in the Inspector

FocusNear State Events lekért állapota

Eseménykonfiguráció típusa a FocusNear State-hez: 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");
});

Fókusz – távoli állapot

A Fókusz távol állapota akkor van beállítva, ha az elsődleges mutató nem a Fő mutató. Az alapértelmezett vezérlő sugármutatója és a GGV (Tekintet, Kézmozdulat, Hang) mutatója például távoli interakciós mutatóknak számít.

Focus Far State BehaviorFocus state far with virtual hand interaction

Focus Far State InspectorFocus far összetevő az Inspectorban

Távoli állapotesemények fókuszba szerzése

Eseménykonfiguráció típusa a FocusFar State-hez: 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");
});

Touch State

A Touch állapot egy közel interakciós állapot, amely akkor van beállítva, amikor egy kéz közvetlenül érinti az objektumot. A közvetlen érintés azt jelenti, hogy a kéz indexa nagyon közel van az objektum világi pozíciójához. Alapértelmezés szerint a rendszer egy összetevőt csatol az objektumhoz, ha a Touch állapotot hozzáadja az NearInteractionTouchableVolume állapotlistához. A Touch-események észleléséhez vagy összetevő NearInteractionTouchableVolumeNearInteractionTouchable jelenléte szükséges. A és a közötti különbség az, hogy észleli az érintést az objektum összeütköztetője alapján, és észleli az érintést a sík NearInteractionTouchableVolumeNearInteractionTouchable egy meghatározott területén NearInteractionTouchableVolumeNearInteractionTouchable belül.

Touch State BehaviorTouch-állapot virtuális kézi interakcióval

Touch State InspectorTouch state összetevő az Inspectorban

Touch State-események lekért

Eseménykonfiguráció típusa a Touch State-hez: 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");
});

Távoli állapot kiválasztása

A Select Far (Távoli kijelölése) állapot IMixedRealityPointerHandler a felszínre van ásva. Ez az állapot egy távoli interakciós állapot, amely észleli a távoli interakciós kattintásokat (légi koppintás), és távoli interakciós mutatók, például az alapértelmezett vezérlő sugármutatója vagy a GGV-mutató használatával tartja a kezében. A Távoli lehetőség kiválasztása lehetőség az eseménykonfiguráció-kicsata alatt van Global néven. Ha Global az érték igaz, akkor a globális IMixedRealityPointerHandler bemenetkezelőként van regisztrálva. Ha egy kezelő globálisként van regisztrálva, a bemeneti rendszer eseményeinek aktiválásához nem szükséges objektumra összpontosítani. Ha például egy felhasználó tudni szeretné, hogy a rendszer bármikor hajtható-e végre a légi koppintás/kijelölés kézmozdulattal, függetlenül attól, hogy a fókuszban van-e az objektum, állítsa true Global (igaz) értékre.

Távoli állapot viselkedésének kiválasztásaTávoli virtuális kéz interakcióval

Válassza a Távoli állam vizsgáló Távolikijelöléseösszetevőt az Inspectorban

Távoli állapotesemények kijelölése

A SelectFar State eseménykonfiguráció-típusa: 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");
});

Kattintott állapot

A Kattintott állapotot alapértelmezés szerint egy távoli interakciós kattintás (Távoli állapot kiválasztása) aktiválja. Ez az állapot belsőleg be van kapcsolva, meghívja az OnClicked eseményt, majd azonnal ki lesz kapcsolva.

Megjegyzés

A vizsgálóban az állapottevékenységen alapuló vizuális visszajelzés nem látható a Kattintott állapothoz, mert az azonnal be- és kikapcsol.

Kattintott állapotviselkedése – Kattintott állapot virtuális kézi interakciók során

A State Inspector kattintsonaz Állapot összetevőre az Inspectorban

Példa a közel és távolról kattintott államra
A kattintott állapot a metódussal aktiválható további belépési interactiveElement.TriggerClickedState() pontokon keresztül. Ha például egy felhasználó közel interakciós érintésre van szükség ahhoz, hogy egy objektumra is kattintást indítson, akkor a metódust érintési állapotban figyelőként TriggerClickedState() adja hozzá.

Közel és távolról lévő állapot virtuális kézi interakciók során

Kattintott állapotesemények lekért állapota

Eseménykonfiguráció típusa a Kattintott állapothoz: ClickedEvents

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

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

A Be és a Ki állapot váltása

A Be és a Ki váltógomb egy pár, és mindkettőnek jelen kell lennie a váltógomb viselkedése érdekében. A Be és a Ki kapcsoló állapotok alapértelmezés szerint távoli kattintással (Távoli állapot kiválasztása) aktiválódnak. Alapértelmezés szerint a Ki kapcsoló állapota indításkor aktív, ami azt jelenti, hogy a váltógomb inicializálva lesz kikapcsolva. Ha egy felhasználó azt szeretné, hogy a Bekapcsolva állapot aktív legyen indításra, akkor a Bekapcsolás bekapcsolva állapot true (igaz) IsSelectedOnStart állapotra van állítva.

Az Állapot viselkedésénekkikapcsolása ki- és bekapcsolás ki- és bekapcsolás a virtuáliskézi interakciók között

Az Állapot vizsgáló ki-és bekapcsolása Váltógomb összetevő azInspectorban

Példa az Államok közeli és távoli kapcsolóira
A Kattintott állapothoz hasonlóan a váltóállapot beállításhoz is több belépési pont is lehet a interactiveElement.SetToggleStates() metódus használatával. Ha például egy felhasználó további belépési pontként szeretne érintéssel beállítani a váltógomb állapotát, akkor hozzáadja a metódust az egyik Touch állapotban látható SetToggleStates() eseményhez.

Közel-távolról kapcsolódva a virtuális kézi interakciókhoz

Be- és ki- és bekapcsolás állapotesemények be- és kikapcsolása

Eseménykonfiguráció típusa a ToggleOn állapothoz: ToggleOnEvents
Eseménykonfiguráció típusa a ToggleOff állapothoz: 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");
});

Speech kulcsszó állapota

A Speech kulcsszó állapota a Speech-profilban definiált kulcsszavakat Mixed Reality figyel. Minden új kulcsszót regisztrálni kell a speech parancsprofilban a futásidő előtt (az alábbi lépések).

Beszédszavas beszédfelismerésikulcsszó virtuális interakcióval

Speech Kulcsszószavas State InspectorSpeech kulcsszó összetevő az Inspectorban

Megjegyzés

A Speech Kulcsszó állapota a szerkesztőben a fenti gif F5 billentyűjének lenyomásával aktiválódott. A szerkesztőben végzett beszédtesztelés beállítását az alábbi lépésekben ismertetjük.

Beszédparancs/-kulcsszó regisztrálása

  1. Válassza ki a MixedRealityToolkit játékobjektumot

  2. Az aktuális profil másolása és testreszabása kiválasztása

  3. Lépjen az Input (Bemenet) szakaszra, és válassza a Clone (Klónozás) lehetőséget a bemeneti profil módosításának engedélyezéséhez

  4. Görgessen le a Bemeneti profil Speech szakaszára, és klónozza a Speech-profilt

    Beszédszavas profil az MRTK játékobjektumban

  5. Válassza az Add a New Speech Command (Új beszédparancs hozzáadása) lehetőséget

    Új beszédszavas kulcsszav hozzáadása az MRTK-profilhoz

  6. Adja meg az új kulcsszót. Nem kötelező: Módosítsa a KeyCode (Kulcskód) paramétert F5 (vagy más) kódra a szerkesztőben való teszteléshez.

    Beszédszavas kulcsszavának konfigurálása az MRTK-profilban

  7. Vissza az Interaktív elem Speech Kulcsszóállapot vizsgálóhoz, és válassza a Kulcsszó hozzáadása lehetőséget

    Kulcsszó hozzáadása interaktív elemösszetevőkhez

    Kulcsszavas ellenőrzés és regisztráció

  8. Adja meg az új kulcsszót, amely most lett regisztrálva a Speech-profilban

    Új speech kulcsszó megadása

A Speech Kulcsszó állapotának szerkesztőben való teszteléséhez nyomja le a 6. lépésben (F5) meghatározott KeyCode billentyűt a felismert beszédszavas esemény szimulálására.

Beszédszavas állapotesemények lekérte

Eseménykonfiguráció típusa a SpeechKeyword állapothoz: 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"); 
});

Egyéni államok

Egyéni állapot létrehozása az Inspectorrel

A vizsgálóval létrehozott egyéni állapot az alapértelmezett állapotesemény-konfigurációval lesz inicializálva. Az egyéni állapot alapértelmezett eseménykonfigurációja típusú, és tartalmazza StateEvents az OnStateOn és az OnStateOff eseményeket.

  1. Az Interaktív elem vizsgálóban lépjen az Egyéni állapot létrehozása elemhez.

    Egyéni állapot létrehozása

  2. Adja meg az új állapot nevét. Ennek a névnek egyedinek kell lennie, és nem lehet ugyanaz, mint a meglévő alapvető államok.

    Új egyéni állapot nevének megadása

  3. Válassza az Állapotnév beállítása lehetőséget az állapotlistához való hozzáadáshoz.

    Egyéni állapot hozzáadása az állapotlistához

    Ez az egyéni állapot az alapértelmezett eseménykonfigurációval van inicializálva, StateEvents amely tartalmazza a és a OnStateOnOnStateOff eseményt. Egyéni eseménykonfiguráció új állapothoz való létrehozásához lásd: Egyéni állapot létrehozása egyéni eseménykonfigurációval.

    Az interaktív elem összetevőben megjelenő új állapot

Egyéni állapot létrehozása szkript használatával

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

Egyéni állapot létrehozása egyéni eseménykonfigurációval

A Billentyűzet nevű egyéni állapot példafájlja itt található: MRTK\SDK\Experimental\InteractiveElement\Examples\Scripts\CustomStateExample

A következő lépések egy meglévő példát mutatnak be az egyéni állapotesemény-konfigurációk és a fogadófájlok létrehozására.

  1. Gondoljon egy államnévre. Ennek a névnek egyedinek kell lennie, és nem lehet ugyanaz, mint a meglévő alapvető államok. Ebben a példában az állapot neve Billentyűzet lesz.

  2. Hozzon létre két .cs fájlt state name + "Receiver" (Fogadó) és state name + "Events" (Események) néven. A fájlok elnevezését belsőleg kell figyelembe venni, és követnie kell az állapot neve + Esemény/Fogadó konvenciót.

    Billentyűzetállapot parancsfájlok

  3. A fájl tartalmával kapcsolatos további részletekért tekintse meg a KeyboardEvents.cs és a KeyboardReceiver.cs fájlt. Az új eseménykonfigurációs osztályoknak a osztálytól kell örökölnie, az új esemény fogadóosztályának pedig a BaseInteractionEventConfiguration osztálytól kell örökölnie. BaseEventReceiver A Billentyűzet állapotbeállításának példái a fájlban CustomStateSettingExample.cs találhatók.

  4. Adja hozzá az állapotot az interaktív elemhez az állapot nevének használatával. Ha az eseménykonfiguráció és az esemény fogadófájlja létezik, a rendszer felismeri az állapot nevét. Az egyéni eseménykonfigurációs fájl tulajdonságainak meg kell jelenni a vizsgálóban.

    Egyéni állapot hozzáadása az interaktív elembenfelismert egyéni állapotinteraktív elemhez

  5. Az eseménykonfigurációra és az esemény fogadófájlra vonatkozó további példákért tekintse meg a következő elérési utakon található fájlokat:

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

Példa jelenet

Az Interaktív elem + State Visualizer példa jelenete itt található: MRTK\SDK\Experimental\InteractiveElement\Examples\InteractiveElementExampleScene.unity

Példa jelenet az Interaktív elem és a State Visualizer segítségével

Tömöríthető gomb

A példa jelenet tartalmaz egy és egy nevű előfésületet, ezek az előzetesek tükrözik a gombok viselkedését, amelyek az Interaktív elem és a State Visualizer használatával CompressableButtonCompressableButtonToggle vannak PressableButtonHoloLens2 felépítve. Az CompressableButton összetevő jelenleg a és az PressableButton + PressableButtonHoloLens2BaseInteractiveElement alaposztályként való kombinációja.

State Visualizer [Kísérleti]

A State Visualizer összetevő animációkat ad egy objektumhoz a csatolt interaktív elem összetevőben meghatározott állapotok alapján. Ez az összetevő animációs eszközöket hoz létre, elhelyezi őket a MixedRealityToolkit.Generated mappában, és lehetővé teszi az egyszerűsített animációs kulcsképkockák beállítását az Animatable tulajdonságok cél játékobjektumhoz való hozzáadásával. Az állapotok közötti animációs átmenetek engedélyezéséhez létrejön egy Animator Controller-eszköz, és létrejön egy alapértelmezett állapotgép a társított paraméterekkel és állapotváltásokkal. Az állapotgép megtekinthető a Unity Animator ablakában.

State Visualizer és Unity Animációs rendszer

A State Visualizer jelenleg a Unity animációs rendszert használja.

Amikor lenyomja az Új animációs videóklipek létrehozása gombot a State Visualizerben, új animációs clip-eszközök jönnek létre az Interaktív elemben található állapotnevek alapján, és a MixedRealityToolkit.Generated mappába kerülnek. Az egyes állapottárolók animációs clip tulajdonsága a társított animációs klipre van beállítva.

Animációs videóklipek az állapot vizualizációs összetevőben

Az Animator State Machine az animációs videóklipek közötti zökkenőmentes átmenetek kezelésére is létrejön. Alapértelmezés szerint az állapotgép az Any State (Bármely állapot) beállítást használja az interaktív elem bármely állapota közötti váltáshoz.

Az animátorban aktivált állapot-vizualizációk az egyes állapotok számára is létrejönnek. Az eseményindító paramétereit a State Visualizer egy animáció aktiválása során használja.

Unity state machine

A Runtime korlátozásai

A State Visualizert az Inspector használatával kell hozzáadni egy objektumhoz, és nem lehet parancsfájlon keresztül hozzáadni. Az AnimatorStateMachine/AnimationController vezérlőt módosító tulajdonságokat egy szerkesztő névterében ( ) található, amely az alkalmazás létrehozása után UnityEditor.Animations lesz eltávolítva.

A State Visualizer használata

  1. Kocka létrehozása

  2. Interaktív elem csatolása

  3. A State Visualizer csatolása

  4. Válassza az Új animációs videóklipek létrehozása lehetőséget

    Új animációs videóklipek létrehozása

    A generált animációs videóklipek megjelenítése vizualizációs és interaktív elemösszetevőkben

  5. A Fókuszállapot tárolóban válassza a Cél hozzáadása lehetőséget

    Állapot vizualizációs cél hozzáadása

  6. Húzza az aktuális játékobjektumot a célmezőre

    Állapot vizualizációs cél beállítása

  7. A Cube Animatable Properties kicsatolt fájl megnyitása

  8. Válassza az Animatable property (Animatable tulajdonság) legördülő menüt, majd a Color (Szín) lehetőséget

    Állapot vizualizációs színének beállítása

  9. Válassza a Szín animatable tulajdonság hozzáadása lehetőséget

    A vizualizációs szín animatable tulajdonság kiválasztása

  10. Szín kiválasztása

    Vizualizációs szín kiválasztása színkerekből

  11. Nyomja le a Play billentyűt, és figyelje meg az átmeneti színváltozást

    Átmeneti színváltozási példa virtuális kézi interakcióval

Animatable Properties

Az Animatable Properties elsődleges célja az animációs clip-kulcsképkockák beállításának egyszerűsítése. Ha a felhasználó ismeri a Unity animációs rendszert, és inkább közvetlenül szeretne kulcsképkockákat beállítani a létrehozott animációs videókliphez, akkor egyszerűen nem adhat hozzá Animatable tulajdonságokat a célobjektumhoz, és nem nyithatja meg a klipet a Unity Animáció ablakában (Windows > Animáció > animáció).

Ha az Animatable tulajdonságokat animációhoz használja, a görbe típusa EaseInOut lesz.

Aktuálisan használható tulajdonságok:

Méretezési eltolás

A Scale Offset Animatable tulajdonság felveszi az objektum aktuális skáláját, és hozzáadja a megadott eltolást.

Skálázással való eltolás virtuális kézi interakcióval

Pozíció eltolása

A Position Offset Animatable tulajdonság az objektum aktuális pozícióját veszi fel, és hozzáadja a megadott eltolást.

Pozícióeltolás a virtuális kéz interakcióval

Szín

A Color Animatable tulajdonság egy anyag fő színét jelöli, ha az anyag fő színtulajdonságokkal rendelkezik. Ez a tulajdonság a tulajdonságot material._Color animats.

Fókusz színváltozása virtuális kéz interakcióval

Shader Color

A Shader Color Animatable tulajdonság egy színtípusú shader tulajdonságra hivatkozik. Minden árnyékoló tulajdonsághoz szükség van egy tulajdonságnévre. Az alábbi gif azt mutatja be, hogyan lehet egy Fill_Color nevű árnyékolószín-tulajdonságot optimalizálni, amely nem a fő anyagszín. Figyelje meg az anyag vizsgálóban a változó értékeket.

Színárnyalat a virtuális kéz interakcióval

Shader Float

A Shader Float Animatable tulajdonság a float típusú shader tulajdonságra hivatkozik. Minden árnyékoló tulajdonsághoz szükség van egy tulajdonságnévre. Az alábbi gif-fájlban figyelje meg a Változó értékeket az anyag vizsgálóban a Majde tulajdonsághoz.

Shader float virtuális kézi interakcióval

Shader Vector

A Shader Vector Animatable tulajdonság a Vector4 típusú shader tulajdonságra hivatkozik. Minden árnyékoló tulajdonsághoz szükség van egy tulajdonságnévre. Az alábbi gif-képen figyelje meg a Tiling (Main Tex_ST) tulajdonság anyagvizsgálóban látható változó értékeket.

Shader-vektor virtuális kézi interakcióval

Az animatable Shader tulajdonságnevek megkeresés

  1. Navigálás a Window > Animation > animációhoz

  2. Győződjön meg arról, hogy a State Visualizert ábrázoló objektum ki van jelölve a hierarchiában

  3. Válasszon ki egy animációs klipet az Animáció ablakban

  4. Válassza a Tulajdonság hozzáadása lehetőséget,majd nyissa meg a Mesh Renderer-kicsatolót

    Animációs tulajdonság hozzáadása az Animator ablakban

  5. Ez a lista az animatable tulajdonságnevek mindegyikének nevét tartalmazza

    Mesh-renderelő animációs tulajdonságai az Animator ablakban

Lásd még