MRTK modularisering – MRTK2

En av de nya funktionerna i Mixed Reality Toolkit v2 är förbättrad komponentisering. Där det är möjligt isoleras enskilda komponenter från alla utom grundlagret.

Minimerade beroenden

MRTK v2 utvecklades avsiktligt för att vara modulärt och för att minimera beroenden mellan systemtjänster (till exempel rumslig medvetenhet).

På grund av vissa systemtjänsters natur (t.ex. indata och teleportering) finns det ett litet antal beroenden.

Även om det förväntas att tjänster behöver en eller flera dataproviderkomponenter finns det inga direkta länkar mellan dem. Detsamma gäller för SDK-funktioner (t.ex. komponenter i användargränssnittet).

Komponentkommunikation

För att säkerställa att det inte finns några direkta länkar mellan komponenter använder MRTK v2 gränssnitt för att kommunicera mellan tjänster, dataleverantörer och programkod. Dessa gränssnitt definieras i och all kommunikation dirigeras via Mixed Reality Toolkit-kärnkomponenten.

Använda systemet för rumslig medvetenhet via gränssnitt

Minimera MRTK-importavtryck

För närvarande importeras MRTK som ett enda Foundation-paket (och ignorerar för ett ögonblick förekomsten av exempelpaketet, vilket är ett helt valfritt paket). Det är möjligt att göra det här fotavtrycket mindre genom att manuellt skära ned på de filer som importeras, även om detta är en mycket manuell process som inte har en väldefinierad guide.

Det går att avmarkera godtyckliga objekt under importen av Foundation-paketet. Det rekommenderas dock inte att göra detta i ett tidigt skede i utvecklingen eftersom det kan bryta funktionaliteten. När du har listat ut den slutliga funktionsuppsättningen för en app kan du rensa onödiga leverantörer och tjänster i följande mappar:

  • MRTK/Tjänster
  • MRTK/Providers
  • MRTK/SDK/Funktioner

Anteckning

MRTK v2.x kräver innehållet i mappen Assets/MRTK/Core.

Kommande funktioner

Programmets arkitektur

MRTK kommer att ha stöd för att göra det möjligt att skapa program med en mängd olika arkitekturer, inklusive:

När du väljer en programarkitektur är det viktigt att överväga designflexitet och programprestanda. Arkitekturerna som beskrivs här förväntas inte vara lämpliga för varje program.

MixedRealityToolkit-tjänstlokaliserare

MRTK aktiverar (och konfigurerar automatiskt) programscener för att använda standardkomponenten MixedRealityToolkit för tjänstlokaliserare. Den här komponenten innehåller stöd för att konfigurera MRTK-system och dataprovidrar via konfigurationsinspektörer och hanterar komponentlivslängder och kärnbeteenden (t.ex. när du ska uppdatera).

Alla system representeras i kärnkonfigurationskontrollen, oavsett om de finns eller är aktiverade i projektet eller inte. Mer information finns i konfigurationsguiden för Mixed Reality.

Enskilda tjänstkomponenter

Vissa utvecklare har uttryckt en önskan att inkludera enskilda tjänstkomponenter i programscenhierarkin. För att aktivera den här användningen måste tjänsterna antingen kapslas in i en anpassad registrator eller vara självregistrering/självhantering.

En självregistreringstjänst implementerar IMixedRealityServiceRegistrar och registrerar sig själv så att programkoden kan identifiera tjänstinstansen via ett register.

En självhanterad tjänst kan implementeras som ett singleton-objekt i scenhierarkin. Det här objektet skulle tillhandahålla instansegenskap som programkoden kan använda för direkt åtkomst till tjänstfunktioner.

Anpassad tjänstlokaliserare

Vissa utvecklare har begärt möjligheten att skapa en anpassad tjänstlokaliseringskomponent. Anpassade tjänstlokaliserare implementerar IMixedRealityServiceRegistrar gränssnittet och hanterar livscykeln och kärnbeteendena för aktiva tjänster.

Hybridarkitektur

MRTK stöder en hybridarkitektur där utvecklare kan kombinera tidigare metoder efter behov eller önskat. En utvecklare kan till exempel börja med tjänstlokaliseraren MixedRealityToolkit och lägga till en självregistreringstjänst.

Anteckning

När du väljer en hybridarkitektur är det viktigt att vara medveten om all duplicering av arbete (t.ex. att hämta kontrollantdata från flera komponenter).