Uppdatera från tidigare versioner – MRTK2

Hitta den aktuella versionen

Följ de här anvisningarna för att ta reda på vilken version av MRTK du använder för närvarande:

  1. Öppna ditt MRTK-projekt i Unity
  2. Gå till mappen "MixedRealityToolkit" i projektfönstret
  3. Öppna filen med namnet "Version"

Om filen och mappen ovan inte finns har du en nyare version av MRTK. I så fall kan du prova följande:

  1. Navigera till mappen "Mixed Reality Toolkit Foundation"
  2. Klicka på "package.json" för att se en förhandsgranskning i Unity eller öppna den med en textredigerare
  3. Leta efter raden med ordet "version:"

Uppgradera till en ny version av MRTK

Vi rekommenderar starkt att du kör migreringsverktyget när du har fått MRTK-uppdateringen för automatisk korrigering och uppgradering från inaktuella komponenter och justera till icke-bakåtkompatibla ändringar. Migreringsverktyget är en del av verktygspaketet .

Anvisningarna nedan beskriver uppgraderingsvägen 2.4.0 till 2.5.0. Om projektet finns på 2.3.0 eller tidigare läser du vidare till ändringarna mellan versionerna för att förstå uppgraderingssökvägen eller läser den tidigare versionens instruktioner för att utföra en uppgradering version för version.

Mixed Reality funktionsverktyg

Det enklaste sättet att uppgradera MRTK till en nyare version av MRTK är att använda Mixed Reality Feature Tool för att ladda ned de senaste paketen och läsa in dem direkt till ditt Unity-projekt.

Om projektet tidigare använde Unity-tillgångsfiler (.unitypackage) kan du läsa de här anvisningarna.

Unity-tillgångsfiler (.unitypackage)

En annan uppgraderingsväg är att manuellt ladda ned MRTK Unity-paket och tillämpa dem på ditt projekt. Se stegen nedan,

  1. Spara en kopia av det aktuella projektet om du skulle nå några problem när som helst i uppgraderingsstegen.
  2. Stäng Unity
  3. I mappen Tillgångar tar du bort följande MRTK-mappar tillsammans med deras .meta-filer (projektet kanske inte har alla mappar i listan)
    • MRTK/Core
    • MRTK/exempel
    • MRTK/tillägg
    • MRTK/Providers
    • MRTK/SDK
    • MRTK/Tjänster
    • MRTK/StandardAssets

    Viktigt

    Om ändringar har gjorts i MRTK-skuggningarna skapar du en lokal säkerhetskopia innan du tar bort mappen MRTK/StandardAssets

    • MRTK/Verktyg

    Viktigt

    Ta INTE bort mappen MixedRealityToolkit.Generated eller dess .meta-fil.

  4. Ta bort biblioteksmappen

    Viktigt

    Vissa Unity-verktyg, till exempel Unity Collab, sparar konfigurationsinformation i mappen Bibliotek. Om du använder ett verktyg som gör detta kopierar du först verktygets datamapp från Biblioteket innan du tar bort den och återställer den sedan när biblioteket har återskapats.

  5. Öppna projektet igen i Unity
  6. Importera de nya Unity-paketen
    • Foundation – Importera det här paketet först
    • Verktyg
    • (Valfritt) Tillägg

    Anteckning

    Om ytterligare tillägg har installerats kan de behöva importeras på nytt.

    • (Valfritt) Exempel
  7. Stäng Unity och ta bort mappen Bibliotek (läs anteckningen nedan först!). Det här steget är nödvändigt för att tvinga Unity att uppdatera sin tillgångsdatabas och stämma av befintliga anpassade profiler.
  8. Starta Unity och för varje scen i projektet
    • Ta bort MixedRealityToolkit och MixedRealityPlayspace, om det finns, från hierarkin. Huvudkameran tas bort, men den återskapas i nästa steg. Om huvudkamerans egenskaper har ändrats manuellt måste dessa återanvändas manuellt när den nya kameran har skapats.
    • Välj MixedRealityToolkit –> Lägg till i scenen och konfigurera
    • Välj MixedRealityToolkit –> Verktyg – Uppdatering –>> Mappningsprofiler för kontrollanter (behöver bara göras en gång) – Detta uppdaterar alla anpassade profiler för mappning av kontrollanter med uppdaterade axlar och data, samtidigt som dina anpassade tilldelade indataåtgärder lämnas intakta
  9. Kör migreringsverktyget och kör verktyget i det fullständiga projektet för att säkerställa att all kod uppdateras till den senaste. Migreringsfönstret innehåller ett antal olika migreringshanterare, som var och en måste köras på egen hand. Det här steget omfattar:
    • Välj den första migreringshanteraren i listrutan Val av migreringshanterare .
    • Klicka på knappen "Fullständigt projekt".
    • Klicka på knappen "Lägg till fullständigt projekt för migrering" (detta genomsöker hela projektet efter objekt som ska migreras).
    • Klicka på knappen "Migrera" som ska aktiveras om några migrerade objekt hittades.
    • Upprepa de föregående tre stegen för var och en av migreringshanterarna i listrutan. (Se det här problemet som beskriver arbete som kan göras för att förenkla migreringsprocessen i en framtida version)

Växla från Unity-tillgångsfiler till Mixed Reality funktionsverktyg

Att byta från Unity-tillgångsfiler till Mixed Reality feature tool-paket medför ett antal fördelar:

  • Enklare uppdatering
  • Snabbare kompileringstider
  • Färre projekt i Visual Studio-lösningen

Att ändra till att använda Mixed Reality-funktionsverktyget kräver en engångsuppsättning med manuella steg.

  1. Spara en kopia av det aktuella projektet.
  2. Stäng Unity
  3. I mappen Tillgångar tar du bort följande MRTK-mappar tillsammans med deras .meta-filer (projektet kanske inte har alla mappar i listan)
    • MRTK/Core
    • MRTK/exempel
    • MRTK/tillägg
    • MRTK/Providers
    • MRTK/SDK
    • MRTK/Tjänster
    • MRTK/StandardAssets

    Viktigt

    Om ändringar har gjorts i MRTK-skuggningarna skapar du en lokal säkerhetskopia innan du tar bort mappen MRTK/StandardAssets

    • MRTK/Verktyg

    Viktigt

    Ta INTE bort mappen MixedRealityToolkit.Generated eller dess .meta-fil.

  4. Ta bort biblioteksmappen

    Viktigt

    Vissa Unity-verktyg, till exempel Unity Collab, sparar konfigurationsinformation i mappen Bibliotek. Om du använder ett verktyg som gör detta kopierar du först verktygets datamapp från Biblioteket innan du tar bort den och återställer den sedan när biblioteket har återskapats.

  5. Öppna projektet igen i Unity

När föregående steg har utförts kör du funktionsverktyget Mixed Reality och importerar önskad version av Mixed Reality Toolkit.

Uppdaterar 2.3.0 till 2.4.0

Mapp byter namn påAPI-ändringar

Mappbyten i 2.4.0

Mapparna MixedRealityToolkit har bytt namn och flyttats till en gemensam hierarki i version 2.4. Om ett program använder hårdkodade sökvägar till MRTK-resurser måste de uppdateras enligt följande tabell.

Föregående mapp Ny mapp
MixedRealityToolkit MRTK/Core
MixedRealityToolkit.Examples MRTK/exempel
MixedRealityToolkit.Extensions MRTK/Tillägg
MixedRealityToolkit.Providers MRTK/Providers
MixedRealityToolkit.SDK MRTK/SDK
MixedRealityToolkit.Services MRTK/Tjänster
MixedRealityToolkit.Tests MRTK/Tester
MixedRealityToolkit.Tools MRTK/Tools

Viktigt

MixedRealityToolkit.Generated Innehåller kundgenererade filer och förblir oförändrade.

Ögonöga installation i 2.4.0

Den här versionen av MRTK ändrar de steg som krävs för ögonögakonfiguration. Kryssrutan IsEyeTrackingEnabled finns i blickinställningarna för indatapekarprofilen. Om du markerar den här rutan aktiveras ögonbaserad blick, snarare än den standardhuvudbaserade blicken.

Mer information om dessa ändringar och fullständiga instruktioner för konfiguration av ögonspårning finns i artikeln ögonspårning .

Beteende för ögonögapekare i 2.4.0

Standardbeteendet för ögonögonpekaren har ändrats så att det matchar standardbeteendet för pekaren för huvudögon. En ögonögapekare ignoreras automatiskt när en hand har identifierats. Ögonögapekaren blir synlig igen efter att ha sagt "Välj".

Detaljer om blick och hand installationer finns i ögon och händer artikel.

API-ändringar i 2.4.0

Anpassade kontrollantklasser

Anpassade kontrollantklasser var tidigare tvungna att definiera SetupDefaultInteractions(Handedness). Den här metoden har gjorts föråldrad i 2.4, eftersom parametern handedness var redundant med kontrollantklassens egenhändighet. Den nya metoden har inga parametrar. Dessutom definierade många kontrollantklasser detta på samma sätt (AssignControllerMappings(DefaultInteractions);), så det fullständiga anropet har omstrukturerats till BaseController och gjort en valfri åsidosättning i stället för obligatoriskt.

Egenskaper för ögonöga

Egenskapen UseEyeTracking från GazeProvider implementeringen av IMixedRealityEyeGazeProvider har bytt namn till IsEyeTrackingEnabled.

Om du gjorde det tidigare...

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

Gör det här nu...

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

Egenskaper för WindowsApiChecker

Följande WindowsApiChecker-egenskaper har markerats som föråldrade. Använd IsMethodAvailable, IsPropertyAvailable eller IsTypeAvailable.

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

Det finns inga planer på att lägga till egenskaper i WindowsApiChecker för framtida API-kontraktsversioner.

GltfMeshPrimitiveAttributes skrivskyddat

De primitiva attributen för gltf-nät som brukade vara inställbara är nu skrivskyddade. Deras värden anges en gång när deserialiseras.

Migrering av anpassad knappikon

Tidigare krävdes anpassade knappikoner för att tilldela ett nytt material till knappens quad-renderare. Detta är inte längre nödvändigt och vi rekommenderar att du flyttar anpassade ikonstrukturer till en IconSet. Befintliga anpassade material och ikoner bevaras. De är dock mindre optimala tills de har uppgraderats. Om du vill uppgradera tillgångarna på alla knappar i projektet till det nya rekommenderade formatet använder du ButtonConfigHelperMigrationHandler. (Mixed Reality Toolkit –> Verktyg –> Migreringsfönster –> Val av migreringshanterare –> Microsoft.MixedReality.Toolkit.Utilities.ButtonConfigHelperMigrationHandler)

Dialog om uppgraderingsfönster

Om det inte finns någon ikon i standardikonen som angavs under migreringen skapas en anpassad ikonuppsättning i MixedRealityToolkit.Generated/CustomIconSets. En dialogruta visar att detta har skett.

Meddelande om anpassad ikon

Uppdaterar 2.2.0 till 2.3.0

API-ändringar i 2.3.0

ControllerPoseSynchronizer

Fältet private ControllerPoseSynchronizer.handedness har markerats som föråldrat. Detta bör ha minimal påverkan på program eftersom fältet inte visas utanför dess klass.

Den offentliga ControllerPoseSynchronizer.Handedness-egenskapens setter har tagits bort (#7012).

MSBuild för Unity

Den här versionen av MRTK använder en nyare version av MSBuild för Unity än tidigare versioner. Om den äldre versionen visas i Unity Package Manger-manifestet under projektinläsningen visas konfigurationsdialogrutan med alternativet Aktivera MSBuild för Unity markerat. Om du tillämpar utförs en uppgradering.

Skriptverktyg

Klassen ScriptingUtilities har markerats som föråldrad och har ersatts av ScriptUtilities i sammansättningen Microsoft.MixedReality.Toolkit.Editor.Utilities. Den nya klassen förfinar tidigare beteende och lägger till stöd för att ta bort skriptdefinitioner.

Befintlig kod fortsätter att fungera i version 2.3.0, men vi rekommenderar att du uppdaterar till den nya klassen.

ShellHandRayPointer

LineRendererSelected- och lineRendererNoTarget-medlemmarna i klassen ShellHandRayPointer har ersatts av lineMaterialSelected respektive lineMaterialNoTarget (#6863).

Ersätt lineRendererSelected med lineMaterialSelected och/eller lineRendererNoTarget med lineMaterialNoTarget för att lösa kompileringsfel.

Spatial observer StartupBehavior

Rumsliga observatörer som bygger på BaseSpatialObserver klassen respekterar nu värdet för StartupBehavior när de återaktiveras (#6919).

Inga ändringar krävs för att dra nytta av den här korrigeringen.

UX-kontrollprefabs har uppdaterats för att använda PressableButton

Följande prefabs använder nu komponenten PressableButton i stället för TouchHandler för nära interaktion (7070)

  • AnimationButton
  • Button (Knapp)
  • ButtonHoloLens1
  • ButtonHoloLens1Toggle
  • CheckBox
  • RadialSet
  • Växlaknapp
  • VäxlaKopplare
  • UnityUIButton
  • UnityUICheckboxButton
  • UnityUIRadialButton
  • UnityUIToggleButton

Programkoden kan kräva uppdatering på grund av den här ändringen.

WindowsMixedRealityUtilities-namnområde

Namnområdet för WindowsMixedRealityUtilities har ändrats från Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input till Microsoft.MixedReality.Toolkit.WindowsMixedReality (#6863).

Uppdatera #using instruktioner för att lösa kompileringsfel.

Uppdaterar 2.1.0 till 2.2.0

API-ändringar i 2.2.0

IMixedRealityBoundarySystem.Contains

Den här metoden tog tidigare in en specifik, Unity-definierad experimentell uppräkning. Nu används en MRTK-definierad uppräkning som är identisk med Unity-uppräkningen. Den här ändringen hjälper dig att förbereda MRTK för Unitys framtida gräns-API:er.

MixedRealityServiceProfileAttribute

För att bättre beskriva kraven för att stödja en profil har MixedRealityServiceProfileAttribute uppdaterats för att lägga till en valfri samling exkluderade typer. Som en del av den här ändringen har egenskapen ServiceType ändrats från Typ till Typ[] och bytt namn till RequiredTypes.

En andra egenskap, ExcludedTypes, har också lagts till.

Uppdaterar 2.0.0 till 2.1.0

API-ändringar i 2.1.0

BaseNearInteractionTouchable

BaseNearInteractionTouchable har ändrats för att markera OnValidate metoden som virtuell. Klasser som utökar BaseNearInteractionTouchable (till exempel NearInteractionTouchableUnityUI) har uppdaterats för att återspegla den här ändringen.

ColliderNearInteractionTouchable

Klassen ColliderNearInteractionTouchable har blivit inaktuell. Uppdatera kodreferenser för att använda BaseNearInteractionTouchable.

IMixedRealityMouseDeviceManager

Tillagd

IMixedRealityMouseDeviceManager har lagts till CursorSpeed och WheelSpeed egenskaper. Med de här egenskaperna kan program ange ett multiplikatorvärde med vilket markörens och hjulets hastighet skalas.

Detta är en icke-bakåtkompatibel ändring och kräver att befintliga implementeringar av musenhetshanteraren ändras.

Anteckning

Den här ändringen är inte bakåtkompatibel med version 2.0.0.

Inaktuell

Egenskapen MouseInputProfile har markerats som föråldrad och kommer att tas bort från en framtida version av Microsoft Mixed Reality Toolkit. Vi rekommenderar att programkoden inte längre använder den här egenskapen.

Interaktionsbar

Följande metoder och egenskaper har blivit inaktuella och kommer att tas bort från en framtida version av Microsoft Mixed Reality Toolkit. Rekommendationen är att uppdatera programkoden enligt vägledningen i attributet Föråldrad och visas i -konsolen.

  • 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

Klassen NearInteractionTouchableSurface har lagts till och fungerar nu som basklass för NearInteractionTouchable och NearInteractionTouchableUnityUI.

Profiländringar i 2.1.0

Profil för handspårning

Handnätet och gemensamma visualiseringar har nu en separat redigerare och spelarinställningar. Profilen för handspårning har uppdaterats för att tillåta att dessa visualiseringar anges till. Ingenting, Allt, Redaktör eller Spelare.

Handvisualiseringslägen

Anpassade handspårningsprofiler kan behöva uppdateras för att fungera korrekt med version 2.1.0.

Anteckning

Den här ändringen är inte bakåtkompatibel med version 2.0.0.

Profil för indatasimulering

Indatasimuleringssystemet har uppgraderats, vilket ändrar några inställningar i indatasimuleringsprofilen. Vissa ändringar kan inte migreras automatiskt och användarna kan upptäcka att profiler använder standardvärden.

  1. Alla nyckelkods- och musknappsbindningar i profilen har ersatts med en generisk KeyBinding struct som lagrar typen av bindning (nyckel eller mus) samt den faktiska bindningskoden (Nyckelkod eller musknappsnummer). Struct har en egen inspektör, som tillåter enhetlig visning och erbjuder ett "automatiskt bindningsverktyg" för att snabbt ange nyckelbindningar genom att trycka på respektive nyckel i stället för att välja från en enorm listruta.

    • FastControlKey
    • VäxlaLeftHandKey
    • VäxlaRightHandKey
    • LeftHandManipulationKey
    • RightHandManipulationKey
  2. MouseLookToggle ingick tidigare i MouseLookButton uppräkningen som InputSimulationMouseButton.Focused, det är nu ett separat alternativ. När den är aktiverad fortsätter kameran att rotera med musen efter att knappen släppts, tills escape-tangenten trycks in.

  3. HandDepthMultiplier standardvärdet har sänkts från 0,1 till 0,03 för att hantera vissa ändringar i indatasimuleringen. Om kameran går för fort när du bläddrar kan du prova att sänka det här värdet.

  4. Nycklar för roterande händer har tagits bort, handrotation styrs nu av musen också. Om du håller HandRotateButton (Ctrl) tillsammans med den vänstra/högra handmanipuleringsnyckeln (LShift/Space) aktiveras handrotation.

  5. En ny axel "UpDown" har introducerats i listan över indataaxel. Detta styr kamerans rörelse i lodrätt och standardvärdet är Q/E-nycklar samt styrenhetsutlösarknappar.

Mer information om dessa ändringar finns i artikeln om indatasimuleringstjänsten .

Profil för musdataprovider

Profilen för musdataprovidern har uppdaterats för att exponera de nya CursorSpeed egenskaperna och WheelSpeed . Befintliga anpassade profiler har automatiskt standardvärden. När profilen sparas sparas dessa nya värden.

Mappningsprofil för kontrollant

Vissa axlar och indatatyper har uppdaterats i 2.1.0, särskilt runt OpenVR-plattformen. Se till att välja MixedRealityToolkit –> Verktyg –> Uppdatera –> Mappningsprofiler för styrenhet vid uppgradering. Detta uppdaterar alla anpassade mappningsprofiler för kontrollanter med uppdaterade axlar och data, samtidigt som dina anpassade tilldelade indataåtgärder lämnas intakta.

Uppdaterar RC2 till 2.0.0

Mellan RC2- och 2.0.0-versionerna av Microsoft Mixed Reality Toolkit gjordes ändringar som kan påverka befintliga projekt. Det här dokumentet beskriver dessa ändringar och hur du uppdaterar projekt till 2.0.0-versionen.

API-ändringar i 2.0.0

Sedan rc2-versionen har det gjorts ett antal API-ändringar, inklusive några som kan bryta befintliga projekt. I följande avsnitt beskrivs de ändringar som har inträffat mellan RC2- och 2.0.0-versionerna.

MixedRealityToolkit

Följande offentliga egenskaper för MixedRealityToolkit-objektet har blivit inaktuella.

  • RegisteredMixedRealityServices innehåller inte längre insamling av registrerade tilläggstjänster och dataleverantörer.

Om du vill komma åt tilläggstjänster använder du MixedRealityServiceRegistry.TryGetService<T>. Om du vill komma åt dataprovidrar omvandlar du tjänstinstansen till IMixedRealityDataProviderAccess och använder GetDataProvider<T>.

Använd MixedRealityServiceRegistry eller CoreServices i stället för följande inaktuella egenskaper

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

CoreServices

Klassen CoreServices är ersättningen för de statiska systemåtkomsterna (t.ex. BoundarySystem) som finns i -objektet MixedRealityToolkit .

Viktigt

Systemåtkomsterna MixedRealityToolkit har blivit inaktuella i version 2.0.0 och kommer att tas bort i en framtida version av MRTK.

Följande kodexempel illustrerar det gamla och det nya mönstret.

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

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

Om du använder den nya CoreSystem-klassen ser du till att programkoden inte behöver uppdateras om du ändrar programmet så att det använder en annan tjänstregistrator (t.ex. en av de experimentella tjänstcheferna).

IMixedRealityRaycastProvider

Med tillägget av IMixedRealityRaycastProvider ändrades konfigurationsprofilen för indatasystemet. Om du har en anpassad profil kan du få felen i följande bild när du kör programmet.

Välja Raycast-providern 1

Åtgärda dessa genom att lägga till en IMixedRealityRaycastProvider-instans i din indatasystemprofil.

Välja Raycast-provider 2

Händelsesystem

  • De IMixedRealityEventSystem gamla API-metoderna Register och Unregister har markerats som föråldrade. De bevaras för bakåtkompatibilitet.
  • InputSystemGlobalListener har markerats som föråldrad. Dess funktioner har inte ändrats.
  • BaseInputHandler basklassen har ändrats från InputSystemGlobalListener till InputSystemGlobalHandlerListener. Det här är en icke-bakåtkompatibel BaseInputHandlerändring för underordnade till .

Motivation bakom förändringen

Det gamla händelsesystem-API: Register et och Unregister kan potentiellt orsaka flera problem i körningen, främst:

  • Om en komponent registreras för globala händelser får den globala indatahändelser av alla typer.
  • Om en av komponenterna i ett objekt registreras för globala indatahändelser får alla komponenter i det här objektet globala indatahändelser av alla typer.
  • Om två komponenter i samma objekt registreras för globala händelser och sedan inaktiveras under körning, slutar den andra att ta emot globala händelser.

Nytt API RegisterHandler och UnregisterHandler:

  • Ger en explicit och detaljerad kontroll över vilka indatahändelser som ska lyssnas globalt och vilka som ska fokuseras.
  • Gör att flera komponenter i samma objekt kan lyssna på globala händelser oberoende av varandra.

Så här migrerar du

  • Om du har anropat RegisterUnregister/API:et direkt tidigare ersätter du dessa anrop med anrop tillUnregisterHandlerRegisterHandler/ . Använd hanterargränssnitt som du implementerar som allmänna parametrar. Om du implementerar flera gränssnitt och flera av dem lyssnar på globala indatahändelser anropar du RegisterHandler flera gånger.
  • Om du har ärvt från InputSystemGlobalListenerändrar du arv till InputSystemGlobalHandlerListener. Implementera RegisterHandlers och UnregisterHandlers abstrakta metoder. I implementeringsanropet inputSystem.RegisterHandler (inputSystem.UnregisterHandler) för att registrera dig för alla hanterargränssnitt som du vill lyssna efter globala händelser för.
  • Om du har ärvt från BaseInputHandlerimplementerar RegisterHandlers du och UnregisterHandlers abstraherar metoder (samma som för InputSystemGlobalListener).

Exempel på migrering

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

Rumslig medvetenhet

Gränssnitten IMixedRealitySpatialAwarenessSystem och IMixedRealitySpatialAwarenessObserver har gjort flera icke-bakåtkompatibla ändringar enligt beskrivningen nedan.

Ändringar

Följande metoder har bytt namn för att bättre beskriva deras användning.

  • IMixedRealitySpatialAwarenessSystem.CreateSpatialObjectParent har bytt namn till för IMixedRealitySpatialAwarenessSystem.CreateSpatialAwarenessObservationParent att förtydliga dess användning.

Tillägg

Baserat på kundfeedback har stöd för enkel borttagning av tidigare observerade rumsliga medvetenhetsdata lagts till.

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

Solvers

Vissa lösningskomponenter och klassen SolverHandler Manager har ändrats för att åtgärda olika buggar och för mer intuitiv användning.

SolverHandler

  • Klassen utökas inte längre från ControllerFinder
  • TrackedObjectToReference public property är inaktuell och har bytt namn till TrackedTargetType
  • TrackedObjectType inaktuella värden för vänster & höger styrenhet. Använd MotionController i stället eller HandJoint värden och uppdatera den nya TrackedHandedness egenskapen för att begränsa spårningen till vänster eller höger kontrollant

Emellan

  • TrackedObjectForSecondTransform public property är inaktuell och har bytt namn till SecondTrackedObjectType
  • AttachSecondTransformToNewTrackedObject() har tagits bort. Om du vill uppdatera lösaren ändrar du de offentliga egenskaperna (d.v.s SecondTrackedObjectType. )

SurfaceMagnetism

  • MaxDistance public property är inaktuell och har bytt namn till MaxRaycastDistance
  • CloseDistance public property är inaktuell och har bytt namn till ClosestDistance
  • Standardvärdet för RaycastDirectionMode är nu TrackedTargetForward vilket raycasts i riktning mot den spårade måltransformen framåt
  • OrientationModeuppräkningsvärdena Vertical och , har bytt namn till TrackedTarget respektive SurfaceNormalFull
  • KeepOrientationVertical offentlig egendom har lagts till för att kontrollera om orienteringen för tillhörande GameObject förblir lodrät

Knappar

  • PressableButton nu har DistanceSpaceMode egenskapen inställd på Local som standard. Detta gör att knappar kan skalas samtidigt som de fortfarande kan tryckas ned

Urklippssfär

Gränssnittet ClippingSphere har ändrats för att spegla API:erna som finns i Urklippslådan och ClippingPlane.

Egenskapen ClippingSpheres Radius beräknas nu implicit baserat på transformeringsskalan. Innan utvecklare måste ange radien för ClippingSphere i inspektören. Om du vill ändra radien uppdaterar du transformeringsskalan precis som vanligt.

NearInteractionTouchable och PokePointer

  • NearInteractionTouchable hanterar inte att Unity UI-arbetsytan rör vid längre. Klassen NearInteractionTouchableUnityUI måste användas för Unity UI-touchables nu.
  • ColliderNearInteractionTouchable är den nya basklassen för beröringsbara objekt som baseras på colliders, d.v.s. alla beröringsbara förutom NearInteractionTouchableUnityUI.
  • BaseNearInteractionTouchable.DistFront har flyttats och bytt namn till PokePointer.TouchableDistance Detta är avståndet och som PokePointer kan interagera med pekbara. Tidigare hade varje pekbar sitt eget maximala interaktionsavstånd, men nu definieras detta i PokePointer som möjliggör bättre optimering.
  • BaseNearInteractionTouchable.DistBack har bytt namn till PokeThreshold Detta gör det tydligt att PokeThreshold är motsvarigheten till DebounceThreshold. En pekbar aktiveras när PokeThreshold korsas och släpps när DebounceThreshold korsas.

ReadOnlyAttribute

Namnområdet Microsoft.MixedReality.Toolkit har lagts till i ReadOnlyAttribute, BeginReadOnlyGroupAttributeoch EndReadOnlyGroupAttribute.

PointerClickHandler

Klassen PointerClickHandler har blivit inaktuell. PointerHandler Bör användas i stället, det ger samma funktioner.

Stöd för HoloLens-klickning

HoloLens-klickerns kontrollantmappningar har ändrats från att vara en ohanterad WindowsMixedRealityController till att vara en ohanterad WindowsMixedRealityGGVHand. För att ta hänsyn till detta körs en automatisk uppdatering första gången du öppnar din ControllerMapping-profil. Öppna anpassade profiler minst en gång efter uppgraderingen till 2.0.0 för att utlösa det här engångsmigreringssteget.

InteractableHighlight

Klassen InteractableHighlight har blivit inaktuell. Klassen InteractableOnFocus och FocusInteractableStates tillgången ska användas i stället. Om du vill skapa en ny Theme tillgång för InteractableOnFocushögerklickar du i projektfönstret och väljer Skapa>Mixed Reality Toolkit>Interaktionsbart>tema.

HandInteractionPanZoom

HandInteractionPanZoom har flyttats till UI-namnområdet eftersom det inte var en indatakomponent. HandPanEventData har också flyttats till det här namnområdet och förenklats för att motsvara andra UI-händelsedata.

Ändringar av sammansättningsnamn i 2.0.0

I versionen 2.0.0 har alla officiella Mixed Reality Toolkit-sammansättningsnamn och deras associerade sammansättningsdefinitionsfiler (.asmdef) uppdaterats så att de passar följande mönster.

Microsoft.MixedReality.Toolkit[.<name>]

I vissa fall har flera sammansättningar slagits samman för att skapa bättre enighet i innehållet. Om ditt projekt använder anpassade .asmdef-filer kan de behöva uppdateras.

Följande tabeller beskriver hur filnamnen RC2 .asmdef mappas till versionen 2.0.0. Alla sammansättningsnamn matchar filnamnet .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 Borttaget använder du 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