Aktualizace ze starších verzí – MRTK2
- Upgrade na novou verzi SADY MRTK
- 2.3.0 až 2.4.0
- 2.2.0 až 2.3.0
- 2.1.0 až 2.2.0
- 2.0.0 až 2.1.0
- RC2 až 2.0.0
Vyhledání aktuální verze
Podle těchto pokynů zjistěte, kterou verzi SADY MRTK aktuálně používáte:
- Otevření projektu MRTK v Unity
- V okně Projektu přejděte do složky MixedRealityToolkit.
- 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í:
- Přejděte do složky "Mixed Reality Toolkit Foundation".
- Kliknutím na package.json zobrazíte náhled v Unity nebo ho otevřete v textovém editoru.
- 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.
- Uložte si kopii aktuálního projektu pro případ, že v kroku upgradu narazíte na nějaké záseky.
- Zavřít Unity
- 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.
- 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.
- Opětovné otevření projektu v Unity
- 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
- 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ů.
- 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é.
- 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ů.
- Uložte kopii aktuálního projektu.
- Zavřít Unity
- 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.
- 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.
- 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 IsEyeTrackingEnabled
GazeProvider
.
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)
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.
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.
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.
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
MouseLookToggle
byla dříve zahrnuta do výčtuMouseLookButton
jakoInputSimulationMouseButton.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.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.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.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.
Chcete-li je opravit, přidejte instanci IMixedRealityRaycastProvider do profilu vstupního systému.
Systém událostí
- Staré
IMixedRealityEventSystem
metodyRegister
rozhraní API aUnregister
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 zInputSystemGlobalListener
naInputSystemGlobalHandlerListener
. 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, zavolejteRegisterHandler
vícekrát. - Pokud jste dědili z
InputSystemGlobalListener
, změňte dědičnost naInputSystemGlobalHandlerListener
. ImplementujteRegisterHandlers
aUnregisterHandlers
abstrahujte metody. V implementaci volejteinputSystem.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
, implementujteRegisterHandlers
aUnregisterHandlers
abstraktní metody (stejně jako proInputSystemGlobalListener
).
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 naTrackedTargetType
TrackedObjectType
vyřadí hodnoty levého & pravého kontroleru. Místo toho použijteMotionController
hodnoty neboHandJoint
a aktualizujte novouTrackedHandedness
vlastnost, abyste omezili sledování na levý nebo pravý ovladač.
InBetween
TrackedObjectForSecondTransform
veřejná vlastnost je zastaralá a byla přejmenována naSecondTrackedObjectType
AttachSecondTransformToNewTrackedObject()
byla odebrána. Pokud chcete řešitel aktualizovat, upravte veřejné vlastnosti (tjSecondTrackedObjectType
. ).
Surface Magneticism
MaxDistance
veřejná vlastnost je zastaralá a byla přejmenována naMaxRaycastDistance
CloseDistance
veřejná vlastnost je zastaralá a byla přejmenována naClosestDistance
- Výchozí hodnota pro
RaycastDirectionMode
teďTrackedTargetForward
je, které raycasty ve směru sledovaného cíle transformují dopředu. OrientationMode
hodnotyVertical
výčtu aFull
se přejmenovaly naTrackedTarget
aSurfaceNormal
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 naLocal
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
, BeginReadOnlyGroupAttribute
a 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 |