Interaktivní prvek [experimentální] – MRTK2

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 novějších verzích, protože využívá novou funkci Unity 2019.3: Serializovat reference.

Interaktivní inspektor elementů

Během režimu přehrávání poskytuje inspektor interaktivních prvků vizuální zpětnou vazbu, která označuje, jestli je aktuální stav aktivní nebo ne. Pokud je stav aktivní, zvýrazní se azurovou barvou. Pokud stav není aktivní, barva se nezmění. Čísla vedle stavů v inspektoru jsou hodnoty stavu, pokud je stav aktivní, pak hodnota je 1, pokud stav není aktivní, hodnota je 0.

Interaktivní prvek s virtuální rukou

Základní stavy

Interactive Element obsahuje základní stavy a podporuje přidání vlastních stavů. Základní stav je ten, který už má logiku nastavení stavu definovanou v nástroji BaseInteractiveElement. Následuje seznam aktuálních stavů jádra řízených vstupy:

Aktuální základní stavy

Základní stavy blízké a vzdálené interakce:

Blízké základní stavy interakce:

Základní stavy vzdálené interakce:

Ostatní základní stavy:

Postup přidání základního stavu prostřednictvím inspektoru

  1. V inspektoru interaktivního elementu přejděte na Přidat stav jádra .

    Přidání základního stavu prostřednictvím inspektoru

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

    Přidání základního stavu prostřednictvím inspektoru s vybraným stavem

  3. Otevřete přeložku Konfigurace událostí a zobrazte události a vlastnosti spojené se stavem.

    Přidání stavu jádra prostřednictvím inspektoru s konfigurací událostí

Postup přidání základního stavu prostřednictvím skriptu

AddNewState(stateName) Pomocí metody přidejte základní stav. Seznam dostupných názvů základních států najdete v výčtu CoreInteractionState .

// 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 elementu jsou typu InteractionState. An InteractionState obsahuje následující vlastnosti:

  • Název: Název státu.
  • Hodnota: Hodnota stavu. Pokud je stav zapnutý, hodnota stavu je 1. Pokud je stav vypnutý, hodnota stavu je 0.
  • Aktivní: Určuje, jestli je stav aktuálně aktivní. Hodnota vlastnosti Active je true, když je stav zapnutý, false, pokud je stav vypnutý.
  • Typ interakce: Typ interakce stavu je typ interakce, pro který je stav určen.
    • None: Nepodporuje žádnou formu interakce vstupu.
    • Near: Podpora blízké interakce. Vstup se považuje za blízkou interakci, když má artikulovaná ruka přímý kontakt s jiným herním objektem, tj. umístění artikulované ruky blízko pozice herního objektu ve světovém prostoru.
    • Far: Podpora vzdálené interakce. Vstup se považuje za dalekou interakci, když se nevyžaduje přímý kontakt s herním objektem. Například vstup prostřednictvím paprsku kontroleru nebo pohledu se považuje za vstup vzdálené interakce.
    • NearAndFar: Zahrnuje podporu blízké i vzdálené interakce.
    • Other: Podpora interakce nezávislé na ukazateli.
  • Konfigurace události: Konfigurace události pro stav je vstupní bod profilu serializovaných událostí.

Všechny tyto vlastnosti jsou nastaveny interně v interaktivním elementu State Manager . 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 uveden níže v částech popisujících jednotlivé stavy jádra.

Tady je zobecněný příklad získání konfigurace událostí 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 k dispozici v interaktivním elementu. Tento stav bude aktivní jenom v případě, že nejsou aktivní všechny ostatní stavy. Pokud se aktivuje jakýkoli jiný stav, nastaví se výchozí stav interně na vypnuto.

Interaktivní prvek je inicializován se stavy Výchozí a Fokus v seznamu stavů. V seznamu stavů musí být vždy uveden výchozí stav.

Získá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 stav blízké a vzdálené interakce, který si můžete představit jako hybridní realitu, která odpovídá najetí myší. Rozlišovací faktor mezi blízkou a vzdálenou interakcí pro stav fokusu je aktuální typ aktivního ukazatele. Pokud je typ ukazatele pro stav fokusu Ukazatel poke, považuje se interakce za blízkou interakci. Pokud primárním ukazatelem není Ukazatel poke, pak se interakce považuje za vzdálenou interakci. Stav fokusu je ve výchozím nastavení v interaktivním elementu.

Chování stavufokusu Stav fokusu s interakcí virtuální ruky

Stav kontroly stavufokusu v inpsectoru

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

Fokus blízko vs. vzdálené chování fokusu

Fokus na blízko a na dálku díky interakci virtuální ruky

Fokus blízko státu

Stav Blízko fokusu se nastaví při vyvolání události fokusu a primárním ukazatelem je ukazatel Poke, který označuje blízkou interakci.

Focus Near State BehaviorFocus Focus Near State Behavior Focus near state with virtual hand interaction

Focus Near State InspectorFocus near component in the Inspector

Získání událostí FocusNear State

Typ konfigurace události pro focusNear State: 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 na dálku

Stav Fokusu daleko se nastaví, když primárním ukazatelem není ukazatel Poke. Například výchozí ukazatel paprsku kontroleru a ukazatel GGV (Gaze, Gesture, Voice) jsou považovány za ukazatele vzdálené interakce.

Chování fokusu vdalekosáhlém stavu s virtuální rukou

Součást Fokus far State InspectorFokus daleko v inspektoru

Získání událostí vzdáleného stavu fokusu

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ého ovládání je stav blízké interakce, který se nastaví, když se artikulovaná ruka dotkne objektu přímo. Přímý dotyk znamená, že ukazováček artikulované ruky je velmi blízko světové pozici objektu. Ve výchozím nastavení NearInteractionTouchableVolume je komponenta připojena k objektu, pokud je stav dotykového ovládání přidán do seznamu stavů. K detekci událostí dotykového NearInteractionTouchableVolume ovládání se vyžaduje přítomnost komponenty nebo NearInteractionTouchable . Rozdíl mezi NearInteractionTouchableVolume a NearInteractionTouchable spočívá v tom, že NearInteractionTouchableVolume detekuje dotyk na základě uchytávače objektu a NearInteractionTouchabledetekuje dotyk v definované oblasti roviny.

Dotykové chování stavu– Stav dotykového ovládání – interakce s virtuální rukou

Touch State InspectorTouch state state component in the Inspector

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

Typ konfigurace události pro stav dotykového ovládání: 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 vzdáleného státu

Stav Vybrat daleko je IMixedRealityPointerHandler zobrazení. Tento stav je stav vzdálené interakce, který detekuje kliknutí na dalekou interakci (klepnutí vzduchem) a drží se pomocí ukazatelů vzdálené interakce, jako je výchozí ukazatel paprsku kontroleru nebo ukazatel GGV. Možnost Select Far state (Vybrat daleko) má možnost v překládání konfigurace události s názvem Global. Pokud Global je true, pak IMixedRealityPointerHandler je registrován jako globální vstupní obslužná rutina. Fokus na objekt není nutný k aktivaci událostí vstupního systému, pokud je obslužná rutina registrována jako globální. Pokud například uživatel chce vědět, kdykoli se provede gesto klepnutí nebo výběr vzduchu bez ohledu na objekt v fokusu, nastavte Global na hodnotu true.

Vybrat chování vzdáleného stavuVybrat daleko s virtuální rukou

Výběr možnosti Vzdálená kontrola stavuVybrat komponentu daleko v inspektoru

Získání událostí vybrat vzdálený stav

Typ konfigurace události pro stav SelectFar: 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 ve výchozím nastavení aktivuje kliknutím na dalekou interakci (Vybrat stav Daleko). Tento stav se interně přepne do polohy Zapnuto, vyvolá událost OnClicked a okamžitě se přepne do polohy Vypnuto.

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á.

Clicked State Behavior (Chování stavuklikaného stavu) Clicked State with virtual hand interactions

Clicked State InspectorClick state component in the Inspector

Příklad blízkého a dalece klikaného stavu
Stav kliknutí lze aktivovat prostřednictvím dalších vstupních bodů pomocí interactiveElement.TriggerClickedState() metody . Pokud například uživatel chce, aby dotykem blízké interakce aktivovalo kliknutí na objekt, přidal by metodu TriggerClickedState() jako naslouchací proces ve stavu dotykového ovládání.

Blízký a vzdálený stav s virtuálními interakcemi rukou

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

Typ konfigurace události pro stav kliknutí: ClickedEvents

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

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

Přepnout zapnuto a vypnout stav

Stavy Zapnout a Vypnout jsou dvojice a oba stavy musí být k dispozici pro chování přepínače. Ve výchozím nastavení se stavy Přepnout a Vypnout aktivují kliknutím na dalekou interakci (vyberte vzdálený stav). Ve výchozím nastavení je stav Přepnout vypnuto aktivní při spuštění, což znamená, že přepínač se inicializuje na vypnuto. Pokud uživatel chce, aby byl stav Přepnout zapnutý na začátku, pak ve stavu Přepnout na hodnotu IsSelectedOnStart true.

Funkce ToggleOn a Toggle Off State BehaviorZapnutí a vypnutí s virtuálními interakcemi rukou

Součást ToggleOn a Toggle Off State InspectorToggle v inspektoru

Příklad blízkých a vzdálených přepínacích stavů
Podobně jako ve stavu 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 dotykové ovládání jako další vstupní bod pro nastavení přepínacích stavů, přidá metodu SetToggleStates() k jedné z událostí ve stavu Dotykové ovládání.

Přepínač blízko a daleko s virtuálními interakcemi rukou

Načítají se události stavu, které jsou zapnuté a vypnuté.

Typ konfigurace události pro přepínací stav: 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ých slov řeči

Stav Klíčové slovo řeči naslouchá klíčovým slovům definovaným v profilu Mixed Reality řeči. Všechna nová klíčová slova musí být před spuštěním zaregistrovaná v profilu příkazu speech (postup najdete níže).

Chování klíčového slova funkce Speech Klíčové slovo pro stav řeči s virtuální interakcí

Komponenta klíčového slova pro kontrolu stavu funkce Speech Klíčové slovo řečiv inspektoru

Poznámka

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

Registrace příkazu nebo klíčového slova služby Speech

  1. Vyberte objekt hry 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 úpravu vstupního profilu.

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

    Profil klíčového slova řeči v herním objektu MRTK

  5. Vyberte Přidat nový příkaz pro řeč.

    Přidání nového klíčového slova řeči v 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é testovat v editoru.

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

  7. Zpět do stavového inspektoru Interactive Element Speech Keyword a vyberte Přidat klíčové slovo.

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

    Ověření 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 řeči v editoru, stiskněte keycode, který byl definován v kroku 6 (F5), aby se simulovala událost rozpoznávání klíčového slova řeči.

Získání událostí stavu klíčových slov řeči

Typ konfigurace události pro stav SpeechKeyword: 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

Jak vytvořit vlastní stav 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 StateEvents a obsahuje události OnStateOn a OnStateOff.

  1. V inspektoru interaktivního elementu přejděte na 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 státu a přidejte ho do seznamu stavů.

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

    Tento vlastní stav se inicializuje s výchozí StateEvents konfigurací událostí, která obsahuje OnStateOn události a OnStateOff . Pokud chcete vytvořit vlastní konfiguraci událostí pro nový stav, přečtěte si téma : Vytvoření vlastního stavu pomocí konfigurace vlastní události.

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

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álostí

Ukázkové soubory pro vlastní stav s názvem Klávesnice najdete 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álostí 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 státu Klávesnice.

  2. Vytvořte dva soubory .cs s názvem state name + "Receiver" a state name + "Events". Pojmenování těchto souborů se bere v úvahu interně a musí se řídit konvencí pro název 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 BaseInteractionEventConfiguration a nové třídy příjemců událostí musí dědit z BaseEventReceiver. Příklady nastavení stavu pro stav klávesnice najdete v CustomStateSettingExample.cs souboru .

  4. Přidejte stav do interaktivního elementu pomocí názvu stavu. Název stavu se rozpozná, pokud existují konfigurace událostí a soubory příjemce 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říjemců událostí najdete v souborech 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 pro Vizualizér interaktivních elementů a stavů se nachází tady: MRTK\SDK\Experimental\InteractiveElement\Examples\InteractiveElementExampleScene.unity

Ukázková scéna s interaktivním elementem a vizualizérem stavu

Tlačítko Komprimovatelné

Ukázková scéna obsahuje prefaby s názvem CompressableButton a CompressableButtonToggle, tyto prefaby odrážejí chování tlačítek vytvořených pomocí interaktivního PressableButtonHoloLens2 elementu a vizualizéru stavu. Komponenta CompressableButton je v současné době kombinací PressableButton + PressableButtonHoloLens2 s BaseInteractiveElementjako základní třída.

Vizualizér stavu [experimentální]

Komponenta Vizualizér stavu přidá animace do objektu na základě stavů definovaných v propojené komponentě Interactive Element. Tato komponenta vytvoří animační assety, umístí je do složky MixedRealityToolkit.Generated a povolí zjednodušené nastavení klíčových snímků animace přidáním animovatelných vlastností k cílovému hernímu objektu. Pokud chcete povolit animační přechody mezi stavy, vytvoří se asset Animator Controller a vygeneruje se výchozí stavový počítač s přidruženými parametry a všemi přechody stavu. Stavový počítač můžete zobrazit v okně Animatoru Unity.

Vizualizér stavu a animační systém Unity

Vizualizér stavu aktuálně využívá animační systém Unity.

Když stisknete tlačítko Generovat nové klipy animace ve Vizualizéru stavu, nové klipy animace se vygenerují na základě názvů stavů v interaktivním elementu a umístí se do složky MixedRealityToolkit.Generated. Vlastnost Klip animace v každém kontejneru stavu je nastavená na přidružený klip animace.

Klipy animace v komponentě vizualizéru stavu

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

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

Stavový počítač Unity

Omezení modulu runtime

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

Jak používat Vizualizér stavu

  1. Vytvoření datové krychle

  2. Připojit interaktivní element

  3. Vizualizér stavu připojení

  4. Vyberte Generovat nové klipy animace.

    Generování nových animačních klipů

    Zobrazení vygenerovaných klipů animace ve vizualizéru a komponentách interaktivních prvků

  5. V kontejneru Stav fokusu vyberte 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í animatovatelné vlastnosti datové krychle

  8. Vyberte rozevírací nabídku vlastnosti Animatable a vyberte Barva.

    Nastavení barvy vizualizéru stavu

  9. Vyberte Přidat vlastnost Animatable barvy.

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

  10. Zvolit barvu

    Výběr barvy vizualizéru z barevného kola

  11. Stiskněte tlačítko Přehrát a sledujte přechodovou změnu barvy.

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

Animovatelné vlastnosti

Hlavním účelem animatovatelné vlastnosti je zjednodušit nastavení klíčových snímků klipu animace. Pokud je uživatel obeznámen se systémem Unity Animation a dává přednost přímému nastavení klíčových snímků na vygenerovaných klipech animace, pak jednoduše nemůže přidat animatovatelné vlastnosti k cílovému objektu a otevřít klip v okně Animace Unity (Windows > Animation > ).

Pokud pro animaci používáte vlastnosti Animatable, je typ křivky nastavený na EaseInOut.

Aktuální animatovatelné vlastnosti:

Posun měřítka

Vlastnost Scale Offset Animatable převezme aktuální měřítko objektu a přidá definovaný posun.

Škálování posunu pomocí interakce virtuální ruky

Posun pozice

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

Posun pozice pomocí interakce virtuální ruky

Barva

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

Změna barvy fokusu při interakci virtuální ruky

Barva shaderu

Vlastnost Shader Color Animatable odkazuje na vlastnost shaderu typu barva. Název vlastnosti je vyžadován pro všechny vlastnosti shaderu. Následující obrázek gif ukazuje animování vlastnosti barvy shaderu s názvem Fill_Color, která není hlavní barvou materiálu. Sledujte změny hodnot v inspektoru materiálu.

Barva stínu s interakcí virtuální ruky

Float shaderu

Vlastnost Shader Float Animatable odkazuje na vlastnost shaderu typu float. Název vlastnosti je vyžadován pro všechny vlastnosti shaderu. V následujícím obrázku gif sledujte změny hodnot v inspektoru materiálu pro vlastnost Metallic.

Float shaderu s virtuální 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. V následujícím obrázku gif sledujte změny hodnot v inspektoru materiálu pro vlastnost Odklácení (Hlavní Tex_ST).

Shader vector with virtual hand interaction

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

  1. Přechod na animaci > 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 vlastnost a otevřete překlopení rendereru sítě.

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

  5. Tento seznam obsahuje názvy všech názvů vlastností, které se dají animatovat.

    Vlastnosti animace rendereru mesh v okně Animatoru

Viz také