Interactive – element [experimentální]

Zjednodušený centralizovaný vstupní bod do vstupního systému MRTK. Obsahuje metody správy stavu, správu událostí a logiku nastavení stavu pro základní stavy interakce.

Interactive element je experimentální funkce podporovaná v Unity 2019,3 a ta, která využívá nové funkce v Unity 2019,3: serializace reference.

Interaktivní inspektor elementu

V režimu přehrávání interaktivní inspektor prvku poskytuje vizuální zpětnou vazbu, která označuje, zda je aktuální stav aktivní. Pokud je stav aktivní, bude zvýrazněný pomocí azurové barvy. Pokud stav není aktivní, barva se nemění. Čísla vedle stavů v inspektoru jsou hodnoty stavu, pokud je stav aktivní, hodnota je 1, pokud stav není aktivní, hodnota je 0.

Interaktivní element s interakcí virtuální ruky

Základní stavy

Interaktivní element obsahuje základní stavy a podporuje přidávání vlastních stavů. Stav jádra je ten, který již má logiku nastavení stavu definovanou v BaseInteractiveElement . Následuje seznam aktuálních základních stavů řízených vstupem:

Aktuální stavy jádra

Stavy základních interakcí blízko a daleko:

Stavy blízkosti interakce:

Základní stavy interakce:

Další základní stavy:

Postup přidání stavu jádra prostřednictvím inspektoru

  1. V inspektoru pro interaktivní element přejděte na Přidat stav Core .

    Přidat stav jádra prostřednictvím inspektoru

  2. Vyberte tlačítko Vybrat stav a zvolte stav jádra, který chcete přidat. Stavy v nabídce jsou seřazené podle typu interakce.

    Přidat stav jádra prostřednictvím kontrolora se zvoleným stavem

  3. Otevřete doložení konfigurace události a zobrazte události a vlastnosti spojené se stavem.

    Přidání stavového jádra prostřednictvím kontrolora s konfigurací události

Postup přidání stavu jádra prostřednictvím skriptu

AddNewState(stateName)K přidání stavu jádra použijte metodu. Seznam dostupných názvů stavových jader získáte pomocí CoreInteractionState výčtu.

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

interactiveElement.AddNewState("SelectFar");

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

Vnitřní struktura stavů

Stavy v interaktivním prvku jsou typu InteractionState . InteractionStateObsahuje následující vlastnosti:

  • Name (název): název stavu.
  • Hodnota: hodnota stavu. Pokud je stav zapnuto, stavová hodnota je 1. Pokud je stav vypnutý, hodnota stavu je 0.
  • Aktivní: bez ohledu na to, jestli je stav aktuálně aktivní. Hodnota vlastnosti aktivní má hodnotu true, pokud je stav zapnuto, false, pokud je stav vypnut.
  • Typ interakce: typ interakce stavu je typ interakce, pro kterou je určen stav.
    • None: Nepodporuje žádnou formu vstupní interakce.
    • Near: Téměř podpora interakce. Vstup se považuje blízko interakce v případě, že kloubová ruka má přímý kontakt s jiným herním objektem, tj. poloha kloubové ruky je blízko pozice herního objektu v prostoru světa.
    • Far: Daleko podporuje interakci. Vstup se považuje za Far interakce, pokud není vyžadován přímý kontakt s herním objektem. Například vstup přes Controller ray nebo pohledu se považuje za Far vstup z interakce.
    • NearAndFar: Zahrnuje podporu interakce téměř i daleko.
    • Other: Podpora závislých interakcí ukazatele.
  • Konfigurace události: Konfigurace události pro stav je vstupní bod profilu serializovaných událostí.

Všechny tyto vlastnosti jsou nastaveny interně v State Manager obsažených v interaktivním elementu. Pro úpravu stavů použijte následující pomocné metody:

Pomocné metody nastavení stavu

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

Získání konfigurace události stavu je specifické pro samotný stav. Každý stav jádra má konkrétní typ konfigurace události, který je popsaný níže v oddílech popisujících jednotlivé stavy jádra.

Tady je zobecněný příklad získání konfigurace události stavu:

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

Výchozí stav

Výchozí stav je vždy přítomen u interaktivního prvku. Tento stav bude aktivní pouze v případě, že nejsou aktivní žádné ostatní stavy. Pokud bude jiný stav aktivní, bude výchozí stav nastaven na interně.

Interaktivní element je inicializován s výchozím stavem a stavy fokusu přítomny v seznamu stavů. Výchozí stav vždy musí být přítomen v seznamu stavů.

Získávání výchozích událostí stavu

Typ konfigurace události pro výchozí stav: 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");
});

Stav fokusu

Stav fokusu je blízko a daleko neaktivním stavem interakce, který se dá představit jako ekvivalent smíšené reality při najetí myší. Rozlišovací faktor mezi blízko a dalekou interakcí pro stav fokus je aktuální typ aktivního ukazatele. Pokud je typ ukazatele pro stav fokusu ukazatel poke, je interakce považována za blízkou interakci. Pokud primární ukazatel není ukazatel poke, interakce je považována za dalekou interakci. Stav fokusu je ve výchozím nastavení přítomen v interaktivním elementu.

Stav fokusu chování fokusu s využitím virtuální interakce

Stav fokusu kontroly stavu fokusuv Inpsector

Získání událostí stavu fokusu

Typ konfigurace události pro stav fokusu: 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");
});

Zaměřit se na téměř velké chování a zaměřit se na to

Zaměření na virtuální interakci blízko a daleko

Zaměřit se na stav blízko

Fokus je poblíž stavu nastaven, když je vyvolána událost fokusu a primární ukazatel je ukazatel poke, indikace blízké interakce.

Soustřeďte se na stavovéinterakce s fokusem blízko stavu s využitím virtuální ruky .

Zaměřit se na blízkou kontrolu stavuv blízkosti komponenty v inspektoru

Získávání událostí stavu FocusNear

Typ konfigurace události pro stav FocusNear: FocusEvents

FocusEvents focusNearEvents = interactiveElement.GetStateEvents<FocusEvents>("FocusNear");

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

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

Zcela neaktivního stavu

Pokud primární ukazatel není ukazatel poke, je tento hlavní stav nastaven jako neaktivní. Například výchozí řadičový ukazatel a ukazatel GGV (pohledu, gesto, hlasový) se považují za Far ukazatelů interakce.

Zaměřte se na zcelastav zaměření na stav adíky interakci s virtuálními rukay

Soustřeďte se na kontroler stavu – Sestavtev inspektoru mnohem součást

Získání podrobných událostí stavu

Typ konfigurace události pro stav FocusFar: FocusEvents

FocusEvents focusFarEvents = interactiveElement.GetStateEvents<FocusEvents>("FocusFar");

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

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

Stav dotykového ovládání

Stav Dotykové ovládání je stav blízké interakce, který se nastavuje, když se artikulovaná rukou dotýká objektu přímo. Přímý dotek znamená, že artikulovaný ukazováček ruky je velmi blízko pozici objektu na světě. Ve výchozím nastavení je komponenta připojena k objektu, pokud je stav NearInteractionTouchableVolume Touch přidaný do seznamu stavů. Přítomnost komponenty NearInteractionTouchableVolume nebo NearInteractionTouchable se vyžaduje pro detekci událostí Touch. Rozdíl mezi a spočívá v tom, že rozpozná dotyk na základě kolace objektu a detekuje dotek v rámci definované NearInteractionTouchableVolumeNearInteractionTouchable oblasti NearInteractionTouchableVolumeNearInteractionTouchable roviny.

Touch State BehaviorTouch state with virtual hand interaction

Komponenta touch stateinspectoru touch v inspektoru

Získání událostí stavu dotykového ovládání

Typ konfigurace události pro 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ýběr možnosti Far State

K dispozici je možnost Select Far state (Vybrat IMixedRealityPointerHandler daleko). Tento stav je dalekou interakcí, který detekuje kliknutí na dalekou interakci (klepnutí ve vzduchu) a drží se prostřednictvím ukazatelů na dalekou interakci, jako je výchozí ukazatel ovladače nebo ukazatel GGV. Možnost Select Far state (Vybrat daleko) má pod sbalenou konfiguraci události možnost Global . Pokud Global je true, pak je IMixedRealityPointerHandler zaregistrován jako globální vstupní obslužná rutina. Pokud je obslužná rutina zaregistrovaná jako globální, není nutné se zaměřit na objekt k aktivaci vstupních událostí systému. Pokud například uživatel chce vědět, kdy se gesto klepnutí nebo výběru vzduchu provádí bez ohledu na objekt v fokusu, nastavte Global na hodnotu true.

Výběr možnosti Chování při dalekosoku– Výběr daleko při interakci s virtuální rukou

Výběr komponenty Far State InspectorSelect far vinspektoru

Získání událostí select far state

Typ konfigurace události pro SelectFar State: 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");
});

Stav kliknutí

Stav Kliknutí se aktivuje ve výchozím nastavení kliknutím na dalekou interakci (Vybrat daleko). Tento stav je interně přepnut na zapnuto, vyvolá událost OnClicked a pak se okamžitě vypne.

Poznámka

Vizuální zpětná vazba v inspektoru založená na aktivitě stavu není k dispozici pro stav Kliknutí, protože je okamžitě zapnutý a vypnutý.

Kliknutí na stav Chování přikliknutí na stav sinterakcemi virtuální ruky

Komponenta clicked State InspectorClick state v inspektoru

Příklad stavu blízko a vzdáleně klikl
Stav kliknutí se může aktivovat prostřednictvím dalších vstupních bodů pomocí interactiveElement.TriggerClickedState() metody . Pokud například uživatel chce, aby dotykové ovládání v blízkosti interakce spouštěl také kliknutí na objekt, přidá metodu jako naslouchací proces ve stavu TriggerClickedState() dotykového ovládání.

Téměř a vzdáleně díky interakci virtuální ruky

Získávání událostí stavu po kliknutí

Typ konfigurace události pro Stav kliknutí: ClickedEvents

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

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

Přepnutí stavu On (Zapnout) a Toggle Off (Vypnout)

Stavy Toggle On (Zapnout) a Toggle Off (Vypnout) jsou pár a oba musí být přítomné pro chování přepínacího přepínače. Ve výchozím nastavení se stavy Toggle On (Zapnout) a Toggle Off (Vypnout) aktivuje kliknutím na vzdálenou interakci (Vybrat daleko). Ve výchozím nastavení je při spuštění aktivní stav Toggle Off (Vypnout), což znamená, že se přepínač inicializuje do vypnuté. Pokud uživatel chce, aby byl při spuštění aktivní stav Zapnout, pak v nastavení Zapnout stav na IsSelectedOnStart hodnotu true.

Přepínače Zapnouta Vypnout chování při přepínání mezi stavy avypnutím při interakcích virtuálních rukou

Přepínací tlačítko ToggleOna Toggle Off State Inspector vinspektoru

Příklad stavů bez přepínacího přepínače a vzdáleně
Podobně jako u stavu Klikl po kliknutí může mít nastavení přepínacího stavu více vstupních bodů pomocí interactiveElement.SetToggleStates() metody . Pokud například uživatel chce dotáhnutí jako další vstupní bod pro nastavení stavů přepínacího tlačítka, přidá metodu k jedné z událostí ve stavu SetToggleStates() Touch.

Přepínač téměř a vzdáleně s interakcemi virtuálních rukou

Získání zapnout a vypnout události stavu

Typ konfigurace události pro stav ToggleOn: ToggleOnEvents
Typ konfigurace události pro stav 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");
});

Stav klíčového slova speech

Stav klíčového slova speech naslouchá klíčovým slovům definovaným v profilu Mixed Reality Speech. Jakékoli nové klíčové slovo MUSÍ být před během zaregistrované v profilu příkazů služby Speech (kroky níže).

Klíčové slovo Speech Keyword State BehaviorSpeech s virtuálníinterakcí

Komponenta Speech Keyword State InspectorSpeech vinspektoru

Poznámka

Stav klíčového slova služby Speech se aktivoval v editoru stisknutím klávesy F5 ve výše uvedeném obrázku GIF. Nastavení v testování řeči v editoru je popsané v následujících krocích.

Postup registrace příkazu nebo klíčového slova řeči

  1. Výběr herního objektu MixedRealityToolkit

  2. Vyberte Kopírovat a přizpůsobit aktuální profil.

  3. Přejděte do části Vstup a výběrem možnosti Klonovat povolte úpravy vstupního profilu.

  4. Posuňte se dolů k části Speech (Řeč) ve vstupním profilu a naklonujte profil řeči.

    Profil klíčových slov řeči v objektu hry MRTK

  5. Vyberte Add a New Speech Command (Přidat nový příkaz řeči).

    Přidání nového klíčového slova řeči do profilu MRTK

  6. Zadejte nové klíčové slovo. Volitelné: Změňte Kód klíče na F5 (nebo jiný kód klíče), aby bylo možné ho testovat v editoru.

    Konfigurace klíčového slova řeči v profilu MRTK

  7. Zpět na inspektor stavu klíčového slova Interactive Element Speech a vyberte Přidat klíčové slovo.

    Přidání klíčového slova do komponenty interaktivního elementu

    Ověřování a registrace klíčových slov

  8. Zadejte nové klíčové slovo, které bylo právě zaregistrováno v profilu služby Speech.

    Zadání nového klíčového slova řeči

Pokud chcete otestovat stav klíčového slova služby Speech v editoru, nasimulujte stisknutím keyCode definovaného v kroku 6 (F5) událost rozpoznávání klíčového slova řeči.

Získávání událostí stavu klíčového slova služby Speech

Typ konfigurace události pro SpeechKeyword State: 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"); 
});

Vlastní stavy

Vytvoření vlastního stavu prostřednictvím inspektoru

Vlastní stav vytvořený prostřednictvím inspektoru se inicializuje s výchozí konfigurací události stavu. Výchozí konfigurace události pro vlastní stav je typu a obsahuje události StateEvents OnStateOn a OnStateOff.

  1. V inspektoru pro Interactive Element přejděte na Create Custom State (Vytvořit vlastní stav).

    Vytvoření vlastního stavu

  2. Zadejte název nového stavu. Tento název musí být jedinečný a nesmí být stejný jako existující základní stavy.

    Zadání názvu nového vlastního stavu

  3. Vyberte Nastavit název stavu a přidejte ho do seznamu stavů.

    Přidání vlastního stavu do seznamu stavů

    Tento vlastní stav se inicializuje s výchozí konfigurací StateEvents události, která obsahuje OnStateOn události a OnStateOff . Pokud chcete vytvořit vlastní konfiguraci události pro nový stav, podívejte se na: Vytvoření vlastního stavu s vlastní konfigurací události.

    Nový stav zobrazený v komponentě interaktivního prvku

Vytvoření vlastního stavu pomocí skriptu

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

Vytvoření vlastního stavu s vlastní konfigurací události

Příklady souborů pro vlastní stav s názvem Klávesnice jsou tady: MRTK\SDK\Experimental\InteractiveElement\Examples\Scripts\CustomStateExample

Následující postup vás provede existujícím příkladem vytvoření vlastní konfigurace události stavu a souborů příjemce.

  1. Představte si název státu. Tento název musí být jedinečný a nesmí být stejný jako existující základní stavy. Pro účely tohoto příkladu bude název stavu Keyboard (Klávesnice).

  2. Vytvořte dva soubory .cs s názvem state name + "Receiver" a state name + "Events". Názvy těchto souborů se zohlední interně a musí se řídit konvencí názvu stavu + událost/příjemce.

    Skripty stavu klávesnice

  3. Další podrobnosti o obsahu souboru najdete v souborech KeyboardEvents.cs a KeyboardReceiver.cs. Nové třídy konfigurace událostí musí dědit z třídy a BaseInteractionEventConfiguration nové třídy přijímače událostí musí dědit z BaseEventReceiver třídy . Příklady nastavení stavu pro stav klávesnice jsou umístěné v CustomStateSettingExample.cs souboru .

  4. Pomocí názvu stavu přidejte stav do interactive elementu. Název stavu se rozpozná, pokud existuje konfigurace události a soubory přijímače událostí. Vlastnosti v konfiguračním souboru vlastní události by se měly zobrazit v inspektoru.

    Přidání vlastního stavu do interaktivního prvkuVlastní stav rozpoznaný v interaktivním elementu

  5. Další příklady konfigurace událostí a souborů přijímače událostí najdete v těchto cestách:

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

Příklad scény

Ukázková scéna interactive elementu + vizualizéru stavu se nachází tady: MRTK\SDK\Experimental\InteractiveElement\Examples\InteractiveElementExampleScene.unity

Příklad scény s interaktivním elementem a vizualizérem stavu

Komprimovatelné tlačítko

Příklad scény obsahuje přednastavené objekty s názvem a , které zrcadlí chování tlačítek vytvořených pomocí interactive elementu a vizualizéru CompressableButtonCompressableButtonTogglePressableButtonHoloLens2 stavu. Komponenta CompressableButton je aktuálně kombinací třídy s jako základní PressableButton + PressableButtonHoloLens2BaseInteractiveElement třídou.

Vizualizér stavu [Experimentální]

Komponenta Vizualizér stavu přidává animace k objektu na základě stavů definovaných v propojené komponentě Interaktivní element. Tato komponenta vytvoří prostředky animace, umístí je do složky MixedRealityToolkit.Generated a povolí zjednodušené nastavení klíčových snímků animace přidáním vlastností Animatable do cílového herního objektu. Pokud chcete povolit přechody animace mezi stavy, vytvoří se prostředek kontroleru Animatoru a vygeneruje se výchozí stavový počítač s přidruženými parametry a libovolnými přechody stavu. Stavový počítač je možné zobrazit v okně Animatoru Unity.

Vizualizér stavu a systém animace Unity

Vizualizér stavu v současné době využívá systém unity animation.

Při stisknutí tlačítka Generate New Animation Clips (Vygenerovat nové klipy animace) ve Vizualizéru stavu se vygenerují nové klipy animace na základě názvů stavů v Interactive Elementu a umístí se do složky MixedRealityToolkit.Generated. Vlastnost Animation Clip (Klip animace) v každém kontejneru stavu je nastavená na přidružený klip animace.

Animace klipů v komponentě vizualizéru stavu

Pro správu hladkého přechodu mezi klipy animace se také vygeneruje stavový počítač Animatoru. Ve výchozím nastavení stavový počítač využívá libovolný stav k povolení přechodů mezi libovolným stavem v interaktivním elementu.

Pro každý stav se také generují vizualizéry stavu aktivované v animátoru. Parametry triggeru se ve Vizualizéru stavu používají k aktivaci animace.

Stavový počítač Unity

Omezení modulu runtime

Vizualizér stavu je nutné přidat do objektu prostřednictvím inspektoru a nelze ho přidat pomocí skriptu. Vlastnosti, které upravuje AnimatorStateMachine/AnimationController, jsou obsažené v oboru názvů editoru ( ), který se odebere při UnityEditor.Animations sestavení aplikace.

Používání vizualizéru stavu

  1. Vytvoření datové krychle

  2. Attach Interactive Element

  3. Připojení vizualizéru stavu

  4. Výběr možnosti Vygenerovat nové klipy animace

    Generování nových klipů animace

    Zobrazení generovaných animovaných klipů v komponentách vizualizéru a interaktivních elementů

  5. V kontejneru Focus state (Stav fokusu) vyberte Add Target (Přidat cíl).

    Přidání cíle vizualizéru stavu

  6. Přetažení aktuálního herního objektu do cílového pole

    Nastavení cíle vizualizéru stavu

  7. Otevření sbalitelné vlastnosti datové krychle

  8. V rozevírací nabídce vyberte vlastnost Animatable a vyberte Color (Barva).

    Nastavení barvy vizualizéru stavu

  9. Vyberte Add the Color Animatable Property (Přidat vlastnost animatovat barvu).

    Výběr animatovatelné vlastnosti barvy vizualizéru

  10. Volba barvy

    Výběr barvy vizualizéru z barevného kolečka

  11. Stiskněte přehrát a sledujte přechodnou změnu barvy.

    Příklad přechodné změny barvy s interakcí virtuální ruky

Animatovatelné vlastnosti

Primárním účelem vlastností Animatable je zjednodušit nastavení oříznutí klíčových snímků animace. Pokud uživatel zná systém animací Unity a dává přednost přímému nastavení klíčových snímků u generovaných klipů animace, nemůže jednoduše přidat animovatelné vlastnosti k cílovému objektu a otevřít klip v okně Animace Unity (Windows > Animation > Animation).

Pokud pro animaci používáte vlastnosti Animatable, nastaví se typ křivky na EaseInOut.

Aktuální animatovatelné vlastnosti:

Posun měřítka

Vlastnost Animatable posunu měřítka přebírá aktuální měřítko objektu a přidává definovaný posun.

Posun škálování s interakcí virtuální rukou

Posun pozice

Vlastnost Position Offset Animatable přebírá aktuální pozici objektu a přidává definovaný posun.

Posun pozice s interakcí virtuální ruky

Barva

Vlastnost Color Animatable představuje hlavní barvu materiálu, pokud má materiál vlastnost hlavní barvy. Tato vlastnost animace material._Color vlastnosti.

Změna barvy fokusu s interakcí virtuální rukou

Barva shaderu

Vlastnost Shader Color Animatable odkazuje na vlastnost shaderu typu color. Název vlastnosti je vyžadován pro všechny vlastnosti shaderu. Obrázek GIF níže ukazuje animaci vlastnosti barvy shaderu s názvem Fill_Color, která není hlavní barvou materiálu. Sledujte měnící se hodnoty v material inspectoru.

Barva odstínu s virtuální interakcí s rukou

Shader Float

Vlastnost Float Animatable shaderu odkazuje na vlastnost shaderu typu float. Název vlastnosti je vyžadován pro všechny vlastnosti shaderu. Na obrázku GIF níže sledujte měnící se hodnoty v material inspectoru pro vlastnost Ádmy.

Float shaderu s virtuální interakcí s rukou

Vektor shaderu

Vlastnost Shader Vector Animatable odkazuje na vlastnost shaderu typu Vector4. Název vlastnosti je vyžadován pro všechny vlastnosti shaderu. Na obrázku GIF níže sledujte měnící se hodnoty vlastnosti Tiling (Main Tex_ST) v material inspectoru.

Vektor shaderu s interakcí virtuální rukou

Jak najít názvy vlastností animatovatelného shaderu

  1. Přechod na > animaci animace > okna

  2. Ujistěte se, že je v hierarchii vybraný objekt s vizualizérem stavu.

  3. Výběr libovolného klipu animace v okně Animace

  4. Vyberte Přidat vlastnosta otevřete skládání Rendereru sítě.

    Přidání vlastnosti animace v okně Animatoru

  5. Tento seznam obsahuje názvy všech názvů vlastností Animatable.

    Vlastnosti animace rendereru sítě v okně Animatoru

Viz také