Aktualizace ze starších verzí – MRTK2

Vyhledání aktuální verze

Podle těchto pokynů zjistěte, kterou verzi SADY MRTK aktuálně používáte:

  1. Otevření projektu MRTK v Unity
  2. V okně Projektu přejděte do složky MixedRealityToolkit.
  3. Otevřete soubor s názvem Version.

Pokud výše uvedený soubor a složka neexistují, používáte novější verzi SADY MRTK. V takovém případě zkuste následující:

  1. Přejděte do složky "Mixed Reality Toolkit Foundation".
  2. Kliknutím na package.json zobrazíte náhled v Unity nebo ho otevřete v textovém editoru.
  3. Vyhledejte řádek se slovem "version:".

Upgrade na novou verzi SADY MRTK

Po získání aktualizace MRTK důrazně doporučujeme spustit nástroj pro migraci, který automaticky opraví a upgraduje zastaralé komponenty a upraví změny způsobující chybu. Nástroj pro migraci je součástí balíčku Nástroje .

Následující pokyny popisují cestu upgradu verze 2.4.0 na verzi 2.5.0. Pokud je váš projekt na verzi 2.3.0 nebo starší, přečtěte si informace o změnách mezi verzemi , abyste porozuměli cestě upgradu, nebo si přečtěte pokyny k upgradu podle verzí v předchozí verzi .

nástroj funkce Mixed Reality

Nejjednodušší způsob, jak upgradovat MRTK na novější verzi MRTK, je použít nástroj Mixed Reality Feature Tool ke stažení nejnovějších balíčků a jejich načtení přímo do projektu Unity.

Pokud projekt dříve používal soubory prostředků Unity (.unitypackage), projděte si tyto pokyny.

Soubory prostředků Unity (.unitypackage)

Další cestou upgradu je ruční stažení balíčků MRTK Unity a jejich použití v projektu. Projděte si následující postup.

  1. Uložte si kopii aktuálního projektu pro případ, že v kroku upgradu narazíte na nějaké záseky.
  2. Zavřít Unity
  3. Ve složce Assets odstraňte následující složky MRTK spolu s jejich soubory .meta (projekt nemusí mít všechny uvedené složky).
    • MRTK/Core
    • MRTK/Příklady
    • MRTK/ Rozšíření
    • MRTK/ Poskytovatelé
    • MRTK/SDK
    • MRTK/Služby
    • MRTK/StandardAssets

    Důležité

    Pokud byly provedeny úpravy shaderů MRTK, vytvořte před odstraněním složky MRTK/StandardAssets místní zálohu.

    • MRTK/Nástroje

    Důležité

    Neodstraňovat složku MixedRealityToolkit.Generated ani její soubor .meta.

  4. Odstranění složky Library

    Důležité

    Některé nástroje Unity, například Unity Collab, ukládají informace o konfiguraci do složky Library. Pokud používáte nástroj, který to dělá, před odstraněním nejprve zkopírujte složku dat nástroje z knihovny a pak ji po opětovném vygenerování knihovny obnovte.

  5. Opětovné otevření projektu v Unity
  6. Import nových balíčků Unity
    • Základy – nejprve naimportujte tento balíček.
    • Nástroje
    • (Volitelné) Rozšíření

    Poznámka

    Pokud byla nainstalována další rozšíření, možná bude potřeba je znovu importovat.

    • (Volitelné) Příklady
  7. Zavřete Unity a odstraňte složku Library (napřed si přečtěte poznámku níže). Tento krok je nezbytný k tomu, aby unity vynutil aktualizaci databáze prostředků a odsouhlasení existujících vlastních profilů.
  8. Spusťte Unity a pro každou scénu v projektu.
    • Odstraňte MixedRealityToolkit a MixedRealityPlayspace, pokud jsou k dispozici, z hierarchie. Tím se odstraní hlavní kamera, ale v dalším kroku se znovu vytvoří. Pokud byly některé vlastnosti hlavní kamery změněny ručně, bude nutné je po vytvoření nové kamery znovu ručně použít.
    • Vyberte MixedRealityToolkit –> Přidat do scény a konfigurovat.
    • Vyberte MixedRealityToolkit –> Nástroje – Aktualizovat –>> Profily mapování kontroleru (stačí provést jenom jednou) – Tím se aktualizují všechny vlastní profily mapování kontroleru aktualizovanými osami a daty, přičemž vaše vlastní akce přiřazené vstupu zůstanou nedotčené.
  9. Spusťte nástroj pro migraci a spusťte ho na úplném projektu , abyste zajistili, že se veškerý kód aktualizuje na nejnovější verzi. Okno migrace obsahuje řadu různých obslužných rutin migrace, které musí být spuštěné samostatně. Tento krok zahrnuje:
    • V rozevíracím seznamu Výběr obslužné rutiny migrace vyberte první obslužnou rutinu migrace.
    • Klikněte na tlačítko Úplný projekt.
    • Klikněte na tlačítko Přidat úplný projekt pro migraci (tím se zkontrolují objekty, které se mají migrovat v celém projektu).
    • Klikněte na tlačítko Migrovat, které by mělo být povolené, pokud byly nalezeny nějaké migrovatelné objekty.
    • Předchozí tři kroky opakujte pro každou obslužnou rutinu migrace v rozevíracím seznamu. (Podívejte se na tento problém , který popisuje práci, kterou je možné udělat pro zjednodušení tohoto procesu migrace v budoucí verzi.)

Přechod ze souborů prostředků Unity na Mixed Reality Feature Tool

Přechod ze souborů prostředků Unity na balíčky nástrojů funkcí Mixed Reality přináší řadu výhod:

  • Jednodušší aktualizace
  • Rychlejší časy kompilace
  • Méně projektů v řešení sady Visual Studio

Změna na použití nástroje Mixed Reality Feature Tool vyžaduje jednorázovou sadu ručních kroků.

  1. Uložte kopii aktuálního projektu.
  2. Zavřít Unity
  3. Ve složce Assets odstraňte následující složky MRTK spolu s jejich soubory .meta (projekt nemusí mít všechny uvedené složky).
    • MRTK/Core
    • MRTK/Příklady
    • MRTK/ Rozšíření
    • MRTK/ Poskytovatelé
    • MRTK/SDK
    • MRTK/Služby
    • MRTK/StandardAssets

    Důležité

    Pokud byly provedeny úpravy shaderů MRTK, vytvořte před odstraněním složky MRTK/StandardAssets místní zálohu.

    • MRTK/Nástroje

    Důležité

    Neodstraňovat složku MixedRealityToolkit.Generated ani její soubor .meta.

  4. Odstranění složky Library

    Důležité

    Některé nástroje Unity, například Unity Collab, ukládají informace o konfiguraci do složky Library. Pokud používáte nástroj, který to dělá, před odstraněním nejprve zkopírujte složku dat nástroje z knihovny a pak ji po opětovném vygenerování knihovny obnovte.

  5. Opětovné otevření projektu v Unity

Po provedení předchozích kroků spusťte nástroj Mixed Reality Feature Tool a naimportujte požadovanou verzi sady Mixed Reality Toolkit.

Aktualizace verze 2.3.0 na 2.4.0

Změny rozhraní APIpro přejmenování složky

Přejmenování složek ve 2.4.0

Složky MixedRealityToolkit byly přejmenovány a přesunuty do společné hierarchie ve verzi 2.4. Pokud aplikace používá pevně zakódované cesty k prostředkům MRTK, bude potřeba je aktualizovat podle následující tabulky.

Předchozí složka Nová složka
MixedRealityToolkit MRTK/Core
MixedRealityToolkit.Examples MRTK/Příklady
MixedRealityToolkit.Extensions MRTK/ Rozšíření
MixedRealityToolkit.Providers MRTK/ Poskytovatelé
MixedRealityToolkit.SDK MRTK/SDK
MixedRealityToolkit.Services MRTK/Služby
MixedRealityToolkit.Tests MRTK/Testy
MixedRealityToolkit.Tools MRTK/Nástroje

Důležité

Obsahuje MixedRealityToolkit.Generated soubory vygenerované zákazníkem a zůstává beze změny.

Nastavení zraku ve 2.4.0

Tato verze sady MRTK upravuje kroky potřebné pro nastavení zrakového pohledu. Zaškrtávací políčko IsEyeTrackingEnabled najdete v nastavení pohledu vstupního profilu ukazatele. Zaškrtnutím tohoto políčka povolíte pohled založený na očích, spíše než výchozí pohled založený na hlavě.

Další informace o těchto změnách a kompletní pokyny pro nastavení sledování očí najdete v článku sledování očí .

Chování ukazatele zraku ve 2.4.0

Výchozí chování ukazatele zrakového pohledu bylo změněno tak, aby odpovídalo výchozímu chování ukazatele pohledu. Po zjištění ruky bude ukazatel zraku automaticky potlačen. Po vyslovení "Vybrat" se ukazatel zraku znovu zobrazí.

Podrobnosti o nastavení pohledu a rukou najdete v článku o očích a rukou .

Změny rozhraní API ve 2.4.0

Vlastní třídy kontroleru

Třídy vlastního kontroleru dříve musely definovat SetupDefaultInteractions(Handedness). Tato metoda byla ve 2.4 zastaralá, protože parametr předání byl redundantní s vlastním předáním třídy kontroleru. Nová metoda nemá žádné parametry. Mnoho tříd kontroleru to navíc definovalo stejným způsobem (AssignControllerMappings(DefaultInteractions);), takže úplné volání bylo refaktorizováno dolů a BaseController místo povinného přepsání bylo provedeno volitelné přepsání.

Vlastnosti očního pohledu

Vlastnost UseEyeTracking z implementace byla IMixedRealityEyeGazeProvider přejmenována na IsEyeTrackingEnabledGazeProvider .

Pokud jste to udělali dříve...

if (CoreServices.InputSystem.GazeProvider is GazeProvider gazeProvider)
{
    gazeProvider.UseEyeTracking = true;
}

Udělejte to teď...

if (CoreServices.InputSystem.GazeProvider is GazeProvider gazeProvider)
{
    gazeProvider.IsEyeTrackingEnabled = true;
}

Vlastnosti WindowsApiChecker

Následující vlastnosti WindowsApiChecker byly označeny jako zastaralé. Použijte IsMethodAvailable, IsPropertyAvailable nebo IsTypeAvailable.

  • UniversalApiContractV8_IsAvailable
  • UniversalApiContractV7_IsAvailable
  • UniversalApiContractV6_IsAvailable
  • UniversalApiContractV5_IsAvailable
  • UniversalApiContractV4_IsAvailable
  • UniversalApiContractV3_IsAvailable

Do WindowsApiCheckeru se neplánují přidávat vlastnosti pro budoucí verze kontraktů rozhraní API.

GltfMeshPrimitiveAttributes jen pro čtení

Primitivní atributy gltf mesh dříve byly nastavitelné, nyní jsou jen pro čtení. Jejich hodnoty se nastaví jednou při deserializaci.

Migrace ikony vlastního tlačítka

Dříve se vyžadovaly vlastní ikony tlačítek s přiřazením nového materiálu k čtyřúhelníku tlačítka. To už není nutné a doporučujeme přesunout textury vlastních ikon do sady IconSet. Stávající vlastní materiály a ikony jsou zachovány. Budou ale méně optimální, dokud nebudou upgradovány. Chcete-li upgradovat prostředky na všech tlačítkách v projektu na nový doporučený formát, použijte ButtonConfigHelperMigrationHandler. (Mixed Reality Toolkit –> Nástroje –> Okno migrace –> Výběr obslužné rutiny migrace –> Microsoft.MixedReality.Toolkit.Utilities.ButtonConfigHelperMigrationHandler)

Dialogové okno pro upgrade

Pokud se ve výchozí sadě ikon během migrace nenajde ikona, vytvoří se vlastní sada ikon v souboru MixedRealityToolkit.Generated/CustomIconSets. Dialogové okno bude indikovat, že k tomu došlo.

Oznámení o vlastní ikoně

Aktualizace verze 2.2.0 na 2.3.0

Změny rozhraní API ve 2.3.0

ControllerPoseSynchronizer

Privátní pole ControllerPoseSynchronizer.handedness bylo označeno jako zastaralé. To by mělo mít minimální dopad na aplikace, protože pole není viditelné mimo svou třídu.

Setter vlastnosti public ControllerPoseSynchronizer.Handedness byl odebrán (#7012).

MSBuild pro Unity

Tato verze MRTK používá novější verzi NÁSTROJE MSBuild pro Unity než předchozí verze. Pokud je během načítání projektu uvedená starší verze v manifestu Unity Package Manger, zobrazí se dialogové okno konfigurace se zaškrtnutou možností Povolit MSBuild pro Unity. Použitím provedete upgrade.

Skriptovací nástroje

Třída ScriptingUtilities byla označena jako zastaralá a byla nahrazena ScriptUtilities v sestavení Microsoft.MixedReality.Toolkit.Editor.Utilities. Nová třída zpřesní předchozí chování a přidá podporu pro odebrání definic skriptů.

I když stávající kód bude dál fungovat ve verzi 2.3.0, doporučuje se aktualizovat na novou třídu.

ShellHandRayPointer

LineRendererSelected a lineRendererNoTarget třídy ShellHandRayPointer byly nahrazeny lineMaterialSelected a lineMaterialNoTarget (#6863).

Pokud chcete vyřešit chyby kompilace, nahraďte lineRendererSelected za lineMaterialSelected a/nebo lineRendererNoTarget za lineMaterialNoTarget.

Prostorový pozorovatel StartupBehavior

Prostorové pozorovatele postavené na BaseSpatialObserver třídě teď při opětovném povolení respektují hodnotu StartupBehavior (#6919).

K využití této opravy nejsou nutné žádné změny.

Aktualizované prefaby ovládacích prvků uživatelského rozhraní tak, aby používaly tlačítko PressableButton

Následující prefabs nyní používají komponentu PressableButton místo TouchHandler pro téměř interakci (7070).

  • AnimationButton
  • Tlačítko
  • ButtonHoloLens1
  • ButtonHoloLens1Toggle
  • CheckBox
  • RadialSet
  • ToggleButton
  • Přepínací tlačítko
  • UnityUIButton
  • UnityUICheckboxButton
  • UnityUIRadialButton
  • UnityUIToggleButton

Kód aplikace může kvůli této změně vyžadovat aktualizaci.

WindowsMixedRealityUtilities – obor názvů

Obor názvů WindowsMixedRealityUtilities se změnil z Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input na Microsoft.MixedReality.Toolkit.WindowsMixedReality (#6863).

Pokud chcete vyřešit chyby kompilace, aktualizujte příkazy #using.

Aktualizace verze 2.1.0 na verzi 2.2.0

Změny rozhraní API ve verzi 2.2.0

IMixedRealityBoundarySystem.Contains

Tato metoda dříve vzala konkrétní experimentální výčet definovaný Unity. Teď přijímá výčet definovaný MRTK, který je identický s výčtem Unity. Tato změna pomáhá připravit MRTK na budoucí rozhraní API hranic Unity.

MixedRealityServiceProfileAttribute

Pro lepší popis požadavků na podporu profilu, MixedRealityServiceProfileAttribute byl aktualizován tak, aby přidal volitelnou kolekci vyloučených typů. V rámci této změny byla vlastnost ServiceType změněna z Type na Type[] a byla přejmenována na RequiredTypes.

Byla přidána také druhá vlastnost ExcludedTypes.

Aktualizace verze 2.0.0 na verzi 2.1.0

Změny rozhraní API ve verzi 2.1.0

BaseNearInteractionTouchable

Byl BaseNearInteractionTouchable upraven tak, aby označoval metodu OnValidate jako virtuální. Třídy, které rozšiřují BaseNearInteractionTouchable (např. NearInteractionTouchableUnityUI), byly aktualizovány tak, aby odrážely tuto změnu.

ColliderNearInteractionTouchable

Třída ColliderNearInteractionTouchable je zastaralá. Aktualizujte odkazy na kód tak, aby používaly BaseNearInteractionTouchable.

IMixedRealityMouseDeviceManager

Přidáno

IMixedRealityMouseDeviceManager byla přidána CursorSpeed vlastnost a WheelSpeed . Tyto vlastnosti umožňují aplikacím určit hodnotu násobitele, podle které bude rychlost kurzoru a kolečka škálována.

Jedná se o zásadní změnu, která vyžaduje úpravu stávajících implementací správce zařízení myši .

Poznámka

Tato změna není zpětně kompatibilní s verzí 2.0.0.

Zastaralé

Vlastnost MouseInputProfile byla označena jako zastaralá a bude odebrána z budoucí verze sady Microsoft Mixed Reality Toolkit. Doporučuje se, aby kód aplikace již tuto vlastnost nepoužít.

Možnost interakce

Následující metody a vlastnosti jsou zastaralé a budou odebrány z budoucí verze sady Microsoft Mixed Reality Toolkit. Doporučujeme aktualizovat kód aplikace podle pokynů obsažených v zastaralém atributu a zobrazeném v konzole nástroje .

  • public bool Enabled
  • public bool FocusEnabled
  • public void ForceUpdateThemes()
  • public bool IsDisabled
  • public bool IsToggleButton
  • public int GetDimensionIndex()
  • public State[] GetStates()
  • public bool RequiresFocus
  • public void ResetBaseStates()
  • public virtual void SetCollision(bool collision)
  • public virtual void SetCustom(bool custom)
  • public void SetDimensionIndex(int index)
  • public virtual void SetDisabled(bool disabled)
  • public virtual void SetFocus(bool focus)
  • public virtual void SetGesture(bool gesture)
  • public virtual void SetGestureMax(bool gesture)
  • public virtual void SetGrab(bool grab)
  • public virtual void SetInteractive(bool interactive)
  • public virtual void SetObservation(bool observation)
  • public virtual void SetObservationTargeted(bool targeted)
  • public virtual void SetPhysicalTouch(bool touch)
  • public virtual void SetPress(bool press)
  • public virtual void SetTargeted(bool targeted)
  • public virtual void SetToggled(bool toggled)
  • public virtual void SetVisited(bool visited)
  • public virtual void SetVoiceCommand(bool voice)

NearInteractionTouchableSurface

Třída NearInteractionTouchableSurface byla přidána a nyní slouží jako základní třída pro NearInteractionTouchable a NearInteractionTouchableUnityUI.

Změny profilu ve verzi 2.1.0

Profil sledování rukou

Ruční síť a společné vizualizace teď mají samostatné nastavení editoru a přehrávače. Profil sledování rukou byl aktualizován tak, aby umožňoval nastavit tyto vizualizace na; Nic, všechno, editor nebo player.

Režimy ruční vizualizace

Možná bude potřeba aktualizovat vlastní profily pro sledování rukou, aby správně fungovaly s verzí 2.1.0.

Poznámka

Tato změna není zpětně kompatibilní s verzí 2.0.0.

Vstupní profil simulace

Systém simulace vstupu byl upgradován, což mění několik nastavení v profilu vstupní simulace. Některé změny nelze migrovat automaticky a uživatelé můžou zjistit, že profily používají výchozí hodnoty.

  1. Všechny vazby KeyCode a tlačítka myši v profilu byly nahrazeny obecnou KeyBinding strukturou, která ukládá typ vazby (klávesa nebo myš) a také skutečný kód vazby (KeyCode nebo číslo tlačítka myši). Struktura má vlastní inspektor, který umožňuje jednotné zobrazení a nabízí nástroj "auto-bind" pro rychlé nastavení klávesových vazeb stisknutím příslušné klávesy místo výběru z obrovského rozevíracího seznamu.

    • FastControlKey
    • ToggleLeftHandKey
    • ToggleRightHandKey
    • LeftHandManipulationKey
    • RightHandManipulationKey
  2. MouseLookToggle byla dříve zahrnuta do výčtu MouseLookButton jako InputSimulationMouseButton.Focused, nyní je to samostatná možnost. Když je tato možnost zapnutá, bude kamera po uvolnění tlačítka pokračovat v otáčení myší, dokud nebude stisknuta klávesa escape.

  3. HandDepthMultiplier Výchozí hodnota se snížila z 0,1 na 0,03, aby se přizpůsobila některým změnám simulace vstupu. Pokud se kamera při posouvání pohybuje příliš rychle, zkuste tuto hodnotu snížit.

  4. Klávesy pro otáčení rukou byly odebrány, otáčení rukou je nyní řízeno také myší. Podržení HandRotateButton (Ctrl) pomocí klávesy pro manipulaci s levou a pravou rukou (LShift/Mezerník) umožní otáčení rukou.

  5. Do seznamu vstupních os byla zavedena nová osa UpDown. Tato funkce řídí pohyb kamery ve svislém směru a ve výchozím nastavení se používají klávesy Q/E a také aktivační tlačítka ovladače.

Další informace o těchto změnách najdete v článku o službě vstupní simulace .

Profil zprostředkovatele dat myši

Profil zprostředkovatele dat myši byl aktualizován tak, aby zpřístupnil nové CursorSpeed vlastnosti a WheelSpeed . Stávající vlastní profily budou mít automaticky zadané výchozí hodnoty. Po uložení profilu se tyto nové hodnoty zachovají.

Profil mapování kontroleru

Některé osy a typy vstupů byly aktualizovány ve verzi 2.1.0, zejména v případě platformy OpenVR. Při upgradu nezapomeňte vybrat MixedRealityToolkit –> Nástroje –> Aktualizace –> Profily mapování kontroleru . Tím se aktualizují všechny vlastní profily mapování kontroleru aktualizovanými osami a daty a vlastní přiřazené vstupní akce zůstanou nedotčené.

Aktualizace RC2 na verzi 2.0.0

Mezi verzemi RC2 a 2.0.0 sady Microsoft Mixed Reality Toolkit došlo ke změnám, které můžou ovlivnit stávající projekty. Tento dokument popisuje tyto změny a postup aktualizace projektů na verzi 2.0.0.

Změny rozhraní API ve verzi 2.0.0

Od vydání verze RC2 došlo k řadě změn rozhraní API, včetně některých, které můžou narušit stávající projekty. Následující části popisují změny, ke kterým došlo mezi verzemi RC2 a 2.0.0.

MixedRealityToolkit

Následující veřejné vlastnosti objektu MixedRealityToolkit jsou zastaralé.

  • RegisteredMixedRealityServices už neobsahuje kolekci registrovaných služeb rozšíření a poskytovatelů dat.

Pokud chcete získat přístup ke službám rozšíření, použijte MixedRealityServiceRegistry.TryGetService<T>. Pokud chcete získat přístup k poskytovatelům dat, přetypujte instanci služby na IMixedRealityDataProviderAccess a použijte GetDataProvider<T>.

Pro následující zastaralé vlastnosti použijte MixedRealityServiceRegistry nebo CoreServices .

  • ActiveSystems
  • InputSystem
  • BoundarySystem
  • CameraSystem
  • SpatialAwarenessSystem
  • TeleportSystem
  • DiagnosticsSystem
  • SceneSystem

CoreServices

Třída CoreServices je náhradou za statické systémové přístupové objekty (např. BoundarySystem) nalezené v objektu MixedRealityToolkit .

Důležité

Systémové MixedRealityToolkit přístupové objekty jsou ve verzi 2.0.0 zastaralé a v budoucí verzi MRTK budou odebrány.

Následující příklad kódu ukazuje starý a nový vzor.

// Old
GameObject playAreaVisualization = MixedRealityToolkit.BoundarySystem?.GetPlayAreaVisualization();

// New
GameObject playAreaVisualization = CoreServices.BoundarySystem?.GetPlayAreaVisualization();

Použití nové třídy CoreSystem zajistí, že kód aplikace se nebude muset aktualizovat, pokud aplikaci změníte tak, aby používala jiného registrátora služeb (např. jednoho z experimentálních správců služeb).

IMixedRealityRaycastProvider

S přidáním IMixedRealityRaycastProvider se změnil profil konfigurace vstupního systému. Pokud máte vlastní profil, při spuštění aplikace se můžou zobrazit chyby na následujícím obrázku.

Výběr poskytovatele Raycast 1

Chcete-li je opravit, přidejte instanci IMixedRealityRaycastProvider do profilu vstupního systému.

Výběr poskytovatele Raycast 2

Systém událostí

  • Staré IMixedRealityEventSystem metody Register rozhraní API a Unregister byly označeny jako zastaralé. Zachovají se kvůli zpětné kompatibilitě.
  • InputSystemGlobalListener byla označena jako zastaralá. Jeho funkčnost se nezměnila.
  • BaseInputHandler Základní třída byla změněna z InputSystemGlobalListener na InputSystemGlobalHandlerListener. Jedná se o zásadní změnu pro všechny potomky .BaseInputHandler

Motivace ke změně

Staré rozhraní API Register systému událostí a Unregister mohlo by potenciálně způsobit několik problémů v modulu runtime, mezi hlavní tyto problémy:

  • Pokud komponenta registruje globální události, obdrží globální vstupní události všech typů.
  • Pokud jedna z komponent objektu registruje globální vstupní události, všechny komponenty v tomto objektu obdrží globální vstupní události všech typů.
  • Pokud se dvě komponenty na stejném objektu registrují ke globálním událostem a jedna je v modulu runtime zakázaná, druhá komponenta přestane přijímat globální události.

Nové rozhraní API RegisterHandler a UnregisterHandler:

  • Poskytuje explicitní a podrobnou kontrolu nad tím, které vstupní události by se měly naslouchat globálně a které by měly být založené na zaměření.
  • Umožňuje více komponentám ve stejném objektu naslouchat globálním událostem nezávisle na sobě.

Postup migrace

  • Pokud jste rozhraní API volali Register/Unregister přímo dříve, nahraďte tato volání voláními .RegisterHandler/UnregisterHandler Rozhraní obslužných rutin, která implementujete, použijte jako obecné parametry. Pokud implementujete více rozhraní a několik z nich naslouchá událostem globálního vstupu, zavolejte RegisterHandler vícekrát.
  • Pokud jste dědili z InputSystemGlobalListener, změňte dědičnost na InputSystemGlobalHandlerListener. Implementujte RegisterHandlers a UnregisterHandlers abstrahujte metody. V implementaci volejte inputSystem.RegisterHandler (inputSystem.UnregisterHandler) pro registraci na všech rozhraních obslužných rutin, pro která chcete naslouchat globálním událostem.
  • Pokud jste dědili z BaseInputHandler, implementujte RegisterHandlers a UnregisterHandlers abstraktní metody (stejně jako pro InputSystemGlobalListener).

Příklady migrace

// Old
class SampleHandler : MonoBehaviour, IMixedRealitySourceStateHandler, IMixedRealityHandJointHandler
{
    private void OnEnable()
    {
        InputSystem?.Register(gameObject);
    }

    private void OnDisable()
    {
        InputSystem?.Unregister(gameObject);
    }
}

// Migrated
class SampleHandler : MonoBehaviour, IMixedRealitySourceStateHandler, IMixedRealityHandJointHandler
{
    private void OnEnable()
    {
        InputSystem?.RegisterHandler<IMixedRealitySourceStateHandler>(this);
        InputSystem?.RegisterHandler<IMixedRealityHandJointHandler>(this);
    }

    private void OnDisable()
    {
        InputSystem?.UnregisterHandler<IMixedRealitySourceStateHandler>(this);
        InputSystem?.UnregisterHandler<IMixedRealityHandJointHandler>(this);
    }
}
// Old
class SampleHandler2 : InputSystemGlobalListener, IMixedRealitySpeechHandler
{
}

// Migrated
class SampleHandler2 : InputSystemGlobalHandlerListener, IMixedRealitySpeechHandler
{
    private void RegisterHandlers()
    {
        InputSystem?.RegisterHandler<IMixedRealitySpeechHandler>(this);
    }

    private void UnregisterHandlers()
    {
        InputSystem?.UnregisterHandler<IMixedRealitySpeechHandler>(this);
    }
}

// Alternative migration
class SampleHandler2 : MonoBehaviour, IMixedRealitySpeechHandler
{
    private void OnEnable()
    {
        IMixedRealityInputSystem inputSystem;
        if (MixedRealityServiceRegistry.TryGetService<IMixedRealityInputSystem>(out inputSystem))
        {
            inputSystem?.RegisterHandler<IMixedRealitySpeechHandler>(this);
        }
    }

    private void OnDisable()
    {
        IMixedRealityInputSystem inputSystem;
        if (MixedRealityServiceRegistry.TryGetService<IMixedRealityInputSystem>(out inputSystem))
        {
            inputSystem?.UnregisterHandler<IMixedRealitySpeechHandler>(this);
        }
    }
}

Prostorové povědomí

Rozhraní IMixedRealitySpatialAwarenessSystem a IMixedRealitySpatialAwarenessObserver provedlo několik zásadních změn, jak je popsáno níže.

Změny

Následující metody byly přejmenovány, aby lépe popisovaly jejich použití.

  • IMixedRealitySpatialAwarenessSystem.CreateSpatialObjectParent Byla přejmenována na , IMixedRealitySpatialAwarenessSystem.CreateSpatialAwarenessObservationParent aby se objasnilo jeho použití.

Dodatky

Na základě zpětné vazby od zákazníků byla přidána podpora pro snadné odebrání dříve pozorovaných dat o sledování prostoru.

  • IMixedRealitySpatialAwarenessSystem.ClearObservations()
  • IMixedRealitySpatialAwarenessSystem.ClearObservations<T>(string name)
  • IMixedRealitySpatialAwarenessObserver.ClearObservations()

Řešitelé

Některé komponenty řešitele a třída správce SolverHandler se změnily za účelem opravy různých chyb a intuitivnějšího použití.

Řešitel

  • Třída již nepřesahuje z ControllerFinder
  • TrackedObjectToReference veřejná vlastnost je zastaralá a byla přejmenována na TrackedTargetType
  • TrackedObjectType vyřadí hodnoty levého & pravého kontroleru. Místo toho použijte MotionController hodnoty nebo HandJoint a aktualizujte novou TrackedHandedness vlastnost, abyste omezili sledování na levý nebo pravý ovladač.

InBetween

  • TrackedObjectForSecondTransform veřejná vlastnost je zastaralá a byla přejmenována na SecondTrackedObjectType
  • AttachSecondTransformToNewTrackedObject() byla odebrána. Pokud chcete řešitel aktualizovat, upravte veřejné vlastnosti (tj SecondTrackedObjectType. ).

Surface Magneticism

  • MaxDistance veřejná vlastnost je zastaralá a byla přejmenována na MaxRaycastDistance
  • CloseDistance veřejná vlastnost je zastaralá a byla přejmenována na ClosestDistance
  • Výchozí hodnota pro RaycastDirectionMode teď TrackedTargetForward je, které raycasty ve směru sledovaného cíle transformují dopředu.
  • OrientationModehodnoty Vertical výčtu a Fullse přejmenovaly na TrackedTarget a SurfaceNormal
  • KeepOrientationVertical byla přidána veřejná vlastnost, která určuje, jestli orientace přidruženého objektu GameObject zůstane svislá.

Tlačítka

  • PressableButton teď má DistanceSpaceMode vlastnost nastavenou na Local výchozí hodnotu. To umožňuje měnit měřítko tlačítek, i když jsou stále stisknutelná.

Oříznutí koule

Rozhraní ClippingSphere se změnilo tak, aby zrcadlila rozhraní API nalezená v ClippingBox a ClippingPlane.

Vlastnost Radius clippingSphere se teď implicitně počítá na základě měřítka transformace. Než by vývojáři museli určit poloměr ClippingSphere v inspektoru. Pokud chcete změnit poloměr, stačí aktualizovat měřítko transformace obvyklým způsobem.

NearInteractionTouchable a PokePointer

  • NearInteractionTouchable už nezvládá dotyky plátna uživatelského rozhraní Unity. NearInteractionTouchableUnityUI Třída musí být nyní použita pro Unity UI touchables.
  • ColliderNearInteractionTouchable je nová základní třída pro touchables založené na kolidérech, tj. všechny dotykové kromě NearInteractionTouchableUnityUI.
  • BaseNearInteractionTouchable.DistFront byl přesunut a přejmenován na PokePointer.TouchableDistance Toto je vzdálenost, kterou může PokePointer interagovat s dotykovými objekty. Dříve měl každý dotykový svůj vlastní maximální vzdálenost interakce, ale nyní je to definováno v PokePointer, což umožňuje lepší optimalizaci.
  • BaseNearInteractionTouchable.DistBack byl přejmenován na PokeThreshold. Díky tomu je jasné, že PokeThreshold je protějškem DebounceThreshold. Dotykový se aktivuje při překročení pokeThreshold a uvolní se při překročení DebounceThreshold.

Atribut ReadOnlyAttribute

Obor Microsoft.MixedReality.Toolkit názvů byl přidán do ReadOnlyAttribute, BeginReadOnlyGroupAttributea EndReadOnlyGroupAttribute.

Obslužná rutina ukazatele

Třída PointerClickHandler je zastaralá. Místo PointerHandler toho by se měl použít příkaz , který poskytuje stejnou funkci.

Podpora pro HoloLens clicker

Mapování kontroleru holoLensu se změnilo z neošetřeného WindowsMixedRealityController na neošetřený WindowsMixedRealityGGVHand. Aby to bylo potřeba zohlednit, spustí se při prvním otevření profilu ControllerMapping automatický aktualizační nástroj. Po upgradu na verzi 2.0.0 otevřete aspoň jednou všechny vlastní profily, aby se aktivovala tato jednorázová migrace.

InteragovatelnéVysoké osvětlení

Třída InteractableHighlight je zastaralá. Místo toho InteractableOnFocus by se měla použít třída a FocusInteractableStates prostředek. Pokud chcete vytvořit nový Theme prostředek pro InteractableOnFocus, klikněte pravým tlačítkem do okna projektu a vyberte Vytvořit>Mixed Reality Toolkit>Interagovatelný>motiv.

HandInteractionPanZoom

HandInteractionPanZoom aplikace byla přesunuta do oboru názvů uživatelského rozhraní, protože nešlo o vstupní komponentu. HandPanEventData Byl také přesunut do tohoto oboru názvů a zjednodušen tak, aby odpovídal ostatním datům událostí uživatelského rozhraní.

Změny názvu sestavení ve verzi 2.0.0

Ve verzi 2.0.0 byly všechny oficiální názvy sestavení sady Mixed Reality Toolkit a jejich přidružené soubory definice sestavení (.asmdef) aktualizovány tak, aby odpovídaly následujícímu vzoru.

Microsoft.MixedReality.Toolkit[.<name>]

V některých případech bylo sloučeno více sestavení, aby se vytvořila lepší jednota jejich obsahu. Pokud projekt používá vlastní soubory .asmdef, mohou vyžadovat aktualizaci.

Následující tabulky popisují mapování názvů souborů RC2 .asmdef na verzi 2.0.0. Všechny názvy sestavení odpovídají názvu souboru .asmdef.

MixedRealityToolkit

RC2 2.0.0
MixedRealityToolkit.asmdef Microsoft.MixedReality.Toolkit.asmdef
MixedRealityToolkit.Core.BuildAndDeploy.asmdef Microsoft.MixedReality.Toolkit.Editor.BuildAndDeploy.asmdef
MixedRealityToolkit.Core.Definitions.Utilities.Editor.asmdef Odebráno, použijte Microsoft.MixedReality.Toolkit.Editor.Utilities.asmdef
MixedRealityToolkit.Core.Extensions.EditorClassExtensions.asmdef Microsoft.MixedReality.Toolkit.Editor.ClassExtensions.asmdef
MixedRealityToolkit.Core.Inspectors.asmdef Microsoft.MixedReality.Toolkit.Editor.Inspectors.asmdef
MixedRealityToolkit.Core.Inspectors.ServiceInspectors.asmdef Microsoft.MixedReality.Toolkit.Editor.ServiceInspectors.asmdef
MixedRealityToolkit.Core.UtilitiesAsync.asmdef Microsoft.MixedReality.Toolkit.Async.asmdef
MixedRealityToolkit.Core.Utilities.Editor.asmdef Microsoft.MixedReality.Toolkit.Editor.Utilities.asmdef
MixedRealityToolkit.Utilities.Gltf.asmdef Microsoft.MixedReality.Toolkit.Gltf.asmdef
MixedRealityToolkit.Utilities.Gltf.Importers.asmdef Microsoft.MixedReality.Toolkit.Gltf.Importers.asmdef

MixedRealityToolkit.Providers

RC2 2.0.0
MixedRealityToolkit.Providers.OpenVR.asmdef Microsoft.MixedReality.Toolkit.Providers.OpenVR.asmdef
MixedRealityToolkit.Providers.WindowsMixedReality.asmdef Microsoft.MixedReality.Toolkit.Providers.WindowsMixedReality.asmdef
MixedRealityToolkit.Providers.WindowsVoiceInput.asmdef Microsoft.MixedReality.Toolkit.Providers.WindowsVoiceInput.asmdef

MixedRealityToolkit.Services

RC2 2.0.0
MixedRealityToolkit.Services.BoundarySystem.asmdef Microsoft.MixedReality.Toolkit.Services.BoundarySystem.asmdef
MixedRealityToolkit.Services.CameraSystem.asmdef Microsoft.MixedReality.Toolkit.Services.CameraSystem.asmdef
MixedRealityToolkit.Services.DiagnosticsSystem.asmdef Microsoft.MixedReality.Toolkit.Services.DiagnosticsSystem.asmdef
MixedRealityToolkit.Services.InputSimulation.asmdef Microsoft.MixedReality.Toolkit.Services.InputSimulation.asmdef
MixedRealityToolkit.Services.InputSimulation.Editor.asmdef Microsoft.MixedReality.Toolkit.Services.InputSimulation.Editor.asmdef
MixedRealityToolkit.Services.InputSystem.asmdef Microsoft.MixedReality.Toolkit.Services.InputSystem.asmdef
MixedRealityToolkit.Services.Inspectors.asmdef Microsoft.MixedReality.Toolkit.Services.InputSystem.Editor.asmdef
MixedRealityToolkit.Services.SceneSystem.asmdef Microsoft.MixedReality.Toolkit.Services.SceneSystem.asmdef
MixedRealityToolkit.Services.SpatialAwarenessSystem.asmdef Microsoft.MixedReality.Toolkit.Services.SpatialAwarenessSystem.asmdef
MixedRealityToolkit.Services.TeleportSystem.asmdef Microsoft.MixedReality.Toolkit.Services.TeleportSystem.asmdef

MixedRealityToolkit.SDK

RC2 2.0.0
MixedRealityToolkit.SDK.asmdef Microsoft.MixedReality.Toolkit.SDK.asmdef
MixedRealityToolkit.SDK.Inspectors.asmdef Microsoft.MixedReality.Toolkit.SDK.Inspectors.asmdef

MixedRealityToolkit.Examples

RC2 2.0.0
MixedRealityToolkit.Examples.asmdef Microsoft.MixedReality.Toolkit.Examples.asmdef
MixedRealityToolkit.Examples.Demos.Gltf.asmdef Microsoft.MixedReality.Toolkit.Demos.Gltf.asmdef
MixedRealityToolkit.Examples.Demos.StandardShader.Inspectors.asmdef Microsoft.MixedReality.Toolkit.Demos.StandardShader.Inspectors.asmdef
MixedRealityToolkit.Examples.Demos.Utilities.InspectorFields.asmdef Microsoft.MixedReality.Toolkit.Demos.InspectorFields.asmdef
MixedRealityToolkit.Examples.Demos.Utilities.InspectorFields.Inspectors.asmdef Microsoft.MixedReality.Toolkit.Demos.InspectorFields.Inspectors.asmdef
MixedRealityToolkit.Examples.Demos.UX.Interactables.asmdef Microsoft.MixedReality.Toolkit.Demos.UX.Interactables.asmdef