Udostępnij za pośrednictwem


Aktualizowanie z wcześniejszych wersji — MRTK2

Znajdowanie bieżącej wersji

Postępuj zgodnie z tymi instrukcjami, aby dowiedzieć się, której wersji zestawu narzędzi MRTK obecnie używasz:

  1. Otwieranie projektu zestawu narzędzi MRTK w a środowisku Unity
  2. Przejdź do folderu "MixedRealityToolkit" w oknie Projektu
  3. Otwórz plik o nazwie "Wersja"

Jeśli powyższy plik i folder nie istnieją, korzystasz z nowszej wersji zestawu narzędzi MRTK. W takim przypadku spróbuj wykonać następujące czynności:

  1. Przejdź do folderu "Mixed Reality Toolkit Foundation"
  2. Kliknij plik "package.json", aby wyświetlić podgląd aparatu Unity lub otworzyć go za pomocą edytora tekstów
  3. Wyszukaj wiersz ze słowem "version:"

Uaktualnianie do nowej wersji zestawu narzędzi MRTK

Zdecydowanie zaleca się uruchomienie narzędzia migracji po uzyskaniu aktualizacji zestawu narzędzi MRTK w celu automatycznego naprawiania i uaktualniania ze przestarzałych składników oraz dostosowywania do zmian powodujących niezgodność. Narzędzie do migracji jest częścią pakietu Narzędzia .

Poniższe instrukcje opisują ścieżkę uaktualnienia od 2.4.0 do 2.5.0. Jeśli projekt jest w wersji 2.3.0 lub starszej, przeczytaj o zmianach między wersjami , aby zrozumieć ścieżkę uaktualnienia, lub przeczytaj instrukcje poprzedniej wersji dotyczące uaktualniania wersji po wersji.

narzędzie funkcji Mixed Reality

Najprostszym sposobem uaktualnienia zestawu narzędzi MRTK do nowszej wersji zestawu narzędzi MRTK jest użycie narzędzia Mixed Reality Feature Tool w celu pobrania najnowszych pakietów i załadowania ich bezpośrednio do projektu aparatu Unity.

Jeśli projekt wcześniej używał plików elementów zawartości aparatu Unity (unitypackage), zapoznaj się z tymi instrukcjami.

Pliki elementów zawartości aparatu Unity (.unitypackage)

Inną ścieżką uaktualnienia jest ręczne pobranie pakietów mrTK Unity i zastosowanie ich do projektu. Zapoznaj się z poniższymi krokami

  1. Zapisz kopię bieżącego projektu na wypadek trafienia dowolnych snagów w dowolnym momencie w krokach uaktualniania.
  2. Zamykanie aparatu Unity
  3. W folderze Assets usuń następujące foldery zestawu narzędzi MRTK wraz z ich plikami meta (projekt może nie zawierać wszystkich folderów na liście)
    • MrTK/Core
    • MrTK/Przykłady
    • Zestaw narzędzi MRTK/rozszerzenia
    • MRTK/Dostawcy
    • Zestaw MRTK/SDK
    • MRTK/Usługi
    • ZASOBY MRTK/StandardAssets

    Ważne

    Jeśli modyfikacje zostały wprowadzone do cieniowania zestawu narzędzi MRTK, utwórz lokalną kopię zapasową przed usunięciem folderu MRTK/StandardAssets

    • MRTK/Narzędzia

    Ważne

    NIE usuwaj folderu MixedRealityToolkit.Generated ani jego pliku meta.

  4. Usuwanie folderu Biblioteka

    Ważne

    Niektóre narzędzia aparatu Unity, takie jak Unity Collab, zapisują informacje o konfiguracji w folderze Biblioteka. Jeśli korzystasz z narzędzia, które to robi, najpierw skopiuj folder danych narzędzia z biblioteki przed usunięciem, a następnie przywróć go po ponownej wygenerowaniu biblioteki.

  5. Otwórz ponownie projekt w a środowisku Unity
  6. Importowanie nowych pakietów unity
    • Foundation — najpierw zaimportuj ten pakiet
    • Narzędzia
    • (Opcjonalnie) Rozszerzenia

    Uwaga

    Jeśli zainstalowano dodatkowe rozszerzenia, może być konieczne ich ponowne zaimportowanie.

    • (Opcjonalnie) Przykłady
  7. Zamknij aparat Unity i usuń folder Biblioteka (najpierw przeczytaj notatkę poniżej). Ten krok jest niezbędny do wymuszenia odświeżenia bazy danych zasobów przez aparat Unity i uzgodnienia istniejących profilów niestandardowych.
  8. Uruchamianie aparatu Unity i dla każdej sceny w projekcie
    • Usuń zestaw MixedRealityToolkit i MixedRealityPlayspace, jeśli istnieje, z hierarchii. Spowoduje to usunięcie głównego aparatu, ale zostanie on utworzony ponownie w następnym kroku. Jeśli jakiekolwiek właściwości aparatu głównego zostały ręcznie zmienione, należy je ponownie zastosować ręcznie po utworzeniu nowego aparatu.
    • Wybierz pozycję MixedRealityToolkit —> dodaj do sceny i skonfiguruj
    • Wybierz pozycję MixedRealityToolkit —> Narzędzia — Aktualizacja —>> Profile mapowania kontrolera (należy wykonać tylko raz) — spowoduje to zaktualizowanie wszystkich niestandardowych profilów mapowania kontrolera ze zaktualizowanymi osiami i danymi, pozostawiając niestandardowe akcje wejściowe bez zmian
  9. Uruchom narzędzie migracji i uruchom narzędzie w pełnym projekcie , aby upewnić się, że cały kod został zaktualizowany do najnowszej wersji. Okno migracji zawiera wiele różnych procedur obsługi migracji, które muszą być uruchamiane samodzielnie. Ten krok obejmuje:
    • Wybierz pierwszą procedurę obsługi migracji z listy rozwijanej Wybór programu obsługi migracji .
    • Kliknij przycisk "Pełny projekt".
    • Kliknij przycisk "Dodaj pełny projekt do migracji" (spowoduje to przeskanowanie całego projektu pod kątem migrowania obiektów).
    • Kliknij przycisk "Migruj", który powinien być włączony, jeśli zostaną znalezione jakiekolwiek obiekty z możliwością migracji.
    • Powtórz poprzednie trzy kroki dla każdego z programów obsługi migracji na liście rozwijanej. (Zobacz ten problem , który obejmuje pracę, którą można wykonać, aby uprościć ten proces migracji w przyszłej wersji)

Przełączanie z plików elementów zawartości aparatu Unity do narzędzia funkcji Mixed Reality

Przejście z plików elementów zawartości aparatu Unity do pakietów narzędzi funkcji Mixed Reality przynosi wiele korzyści:

  • Łatwiejsze aktualizowanie
  • Krótszy czas kompilacji
  • Mniej projektów w rozwiązaniu programu Visual Studio

Zmiana na użycie narzędzia Mixed Reality Feature Tool wymaga jednorazowego zestawu ręcznych kroków.

  1. Zapisz kopię bieżącego projektu.
  2. Zamykanie aparatu Unity
  3. W folderze Assets usuń następujące foldery zestawu narzędzi MRTK wraz z ich plikami meta (projekt może nie zawierać wszystkich folderów na liście)
    • MrTK/Core
    • MrTK/Przykłady
    • Zestaw narzędzi MRTK/rozszerzenia
    • MRTK/Dostawcy
    • Zestaw MRTK/SDK
    • MRTK/Usługi
    • ZASOBY MRTK/StandardAssets

    Ważne

    Jeśli modyfikacje zostały wprowadzone do cieniowania zestawu narzędzi MRTK, utwórz lokalną kopię zapasową przed usunięciem folderu MRTK/StandardAssets

    • MRTK/Narzędzia

    Ważne

    NIE usuwaj folderu MixedRealityToolkit.Generated ani jego pliku meta.

  4. Usuwanie folderu Biblioteka

    Ważne

    Niektóre narzędzia aparatu Unity, takie jak Unity Collab, zapisują informacje o konfiguracji w folderze Biblioteka. Jeśli korzystasz z narzędzia, które to robi, najpierw skopiuj folder danych narzędzia z biblioteki przed usunięciem, a następnie przywróć go po ponownej wygenerowaniu biblioteki.

  5. Otwórz ponownie projekt w środowisku Unity

Po wykonaniu poprzednich kroków uruchom narzędzie Mixed Reality Feature Tool i zaimportuj żądaną wersję zestawu narzędzi Mixed Reality Toolkit.

Aktualizowanie wersji 2.3.0 do wersji 2.4.0

Zmiany interfejsu APIzmiany nazwy folderu

Zmiany nazw folderów w wersji 2.4.0

Nazwa folderów MixedRealityToolkit została zmieniona i przeniesiona do wspólnej hierarchii w wersji 2.4. Jeśli aplikacja używa twardych ścieżek kodowanych do zasobów zestawu narzędzi MRTK, należy je zaktualizować zgodnie z poniższą tabelą.

Poprzedni folder Nowy folder
MixedRealityToolkit MRTK/Core
MixedRealityToolkit.Examples MrTK/Przykłady
MixedRealityToolkit.Extensions MRTK/Rozszerzenia
MixedRealityToolkit.Providers MRTK/Dostawcy
MixedRealityToolkit.SDK ZESTAW MRTK/SDK
MixedRealityToolkit.Services MRTK/Services
MixedRealityToolkit.Tests MRTK/Testy
MixedRealityToolkit.Tools MRTK/Narzędzia

Ważne

Zawiera MixedRealityToolkit.Generated pliki wygenerowane przez klienta i pozostaje niezmienione.

Konfiguracja wzroku w wersji 2.4.0

Ta wersja zestawu NARZĘDZI MRTK modyfikuje kroki wymagane do skonfigurowania wzroku. Pole wyboru "IsEyeTrackingEnabled" można znaleźć w ustawieniach spojrzenia profilu wskaźnika wejściowego. Zaznaczenie tego pola spowoduje włączenie spojrzenia opartego na oczach, a nie domyślnego spojrzenia na głowę.

Aby uzyskać więcej informacji na temat tych zmian i kompletnych instrukcji dotyczących konfigurowania śledzenia oczu, zobacz artykuł śledzenia oczu .

Zachowanie wskaźnika wzroku w wersji 2.4.0

Domyślne zachowanie wskaźnika wzroku zostało zmodyfikowane w celu dopasowania do domyślnego zachowania wskaźnika wzroku głowy. Wskaźnik wzroku zostanie automatycznie pominięty po wykryciu ręki. Wskaźnik wzroku będzie widoczny ponownie po napisie "Wybierz".

Szczegółowe informacje na temat ustawień wzroku i dłoni można znaleźć w oczy i ręce artykuł.

Zmiany interfejsu API w wersji 2.4.0

Niestandardowe klasy kontrolera

Wcześniej trzeba było zdefiniować SetupDefaultInteractions(Handedness)niestandardowe klasy kontrolera . Ta metoda została przestarzała w wersji 2.4, ponieważ parametr przekazania był nadmiarowy z własną ręką klasy kontrolera. Nowa metoda nie ma parametrów. Ponadto wiele klas kontrolerów zdefiniowało tę samą metodę (AssignControllerMappings(DefaultInteractions);), więc pełne wywołanie zostało refaktoryzowane w dół i BaseController wykonane opcjonalne przesłonięcia zamiast wymaganego.

Właściwości spojrzenia oczu

Nazwa UseEyeTracking właściwości z GazeProvider implementacji IMixedRealityEyeGazeProvider elementu została zmieniona na IsEyeTrackingEnabled.

Jeśli to zrobiłeś wcześniej...

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

Zrób to teraz...

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

Właściwości platformy WindowsApiChecker

Następujące właściwości platformy WindowsApiChecker zostały oznaczone jako przestarzałe. Użyj polecenia IsMethodAvailable, IsPropertyAvailable lub IsTypeAvailable.

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

Nie ma planów dodania właściwości do platformy WindowsApiChecker dla przyszłych wersji kontraktów interfejsu API.

GltfMeshPrimitiveAttributes tylko do odczytu

Atrybuty pierwotne siatki gltf używane do ustawiania, są teraz tylko do odczytu. Ich wartości zostaną ustawione raz po deserializacji.

Migracja ikony przycisku niestandardowego

Wcześniej niestandardowe ikony przycisków wymagały przypisania nowego materiału do modułu renderowania czworokątnego przycisku. Nie jest to już konieczne i zalecamy przeniesienie niestandardowych tekstur ikon do zestawu ikon. Istniejące materiały niestandardowe i ikony są zachowywane. Jednak będą one mniej optymalne do czasu uaktualnienia. Aby uaktualnić zasoby na wszystkich przyciskach w projekcie do nowego zalecanego formatu, użyj polecenia ButtonConfigHelperMigrationHandler. (Mixed Reality Toolkit — Narzędzia —>> Okno migracji —> Wybór programu obsługi migracji —> Microsoft.MixedReality.Toolkit.Utilities.ButtonConfigHelperMigrationHandler)

Okno dialogowe uaktualniania

Jeśli ikona nie zostanie znaleziona w domyślnym zestawie ikon ustawionym podczas migracji, zestaw ikon niestandardowych zostanie utworzony w zestawie MixedRealityToolkit.Generated/CustomIconSets. Zostanie wyświetlone okno dialogowe wskazujące, że zostało to zrobione.

Powiadomienie ikony niestandardowej

Aktualizowanie wersji 2.2.0 do wersji 2.3.0

Zmiany interfejsu API w wersji 2.3.0

ControllerPoseSynchronizer

Pole private ControllerPoseSynchronizer.handedness zostało oznaczone jako przestarzałe. Powinno to mieć minimalny wpływ na aplikacje, ponieważ pole nie jest widoczne poza klasą.

Element setter właściwości public ControllerPoseSynchronizer.Handedness został usunięty (#7012).

MSBuild dla aparatu Unity

Ta wersja zestawu NARZĘDZI MRTK używa nowszej wersji programu MSBuild dla środowiska Unity niż poprzednie wersje. Podczas ładowania projektu, jeśli starsza wersja jest wyświetlana w manifeście narzędzia Unity Package Manger, zostanie wyświetlone okno dialogowe konfiguracji z zaznaczoną opcją Włącz program MSBuild dla aparatu Unity. Zastosowanie spowoduje przeprowadzenie uaktualnienia.

ScriptingUtilities

Klasa ScriptingUtilities została oznaczona jako przestarzała i została zastąpiona przez ScriptUtilities w zestawie Microsoft.MixedReality.Toolkit.Editor.Utilities. Nowa klasa uściśli poprzednie zachowanie i dodaje obsługę usuwania definicji skryptów.

Mimo że istniejący kod będzie nadal działać w wersji 2.3.0, zaleca się zaktualizowanie do nowej klasy.

ShellHandRayPointer

Elementy członkowskie lineRendererSelected i lineRendererNoTarget klasy ShellHandRayPointer zostały zastąpione odpowiednio przez lineMaterialSelected i lineMaterialNoTarget (#6863).

Zastąp ciąg lineRendererSelected wierszemMaterialSelected i/lub lineRendererNoTarget wierszemMaterialNoTarget, aby usunąć błędy kompilacji.

Obserwator przestrzenny StartupBehavior

Obserwatorzy przestrzenni zbudowani na BaseSpatialObserver klasie honorują teraz wartość StartupBehavior po ponownym włączeniu (#6919).

W celu skorzystania z tej poprawki nie są wymagane żadne zmiany.

Prefabki sterowania środowiska użytkownika zaktualizowane do korzystania z pressableButton

Następujące prefabryki używają teraz składnika PressableButton zamiast funkcji TouchHandler do niemal interakcji (7070)

  • AnimacjaButton
  • Przycisk
  • ButtonHoloLens1
  • ButtonHoloLens1Toggle
  • CheckBox
  • Zestaw promieniowy
  • ToggleButton
  • Przełącznik przełącznika
  • UnityUIButton
  • UnityUICheckboxButton
  • UnityUIRadialButton
  • UnityUIToggleButton

Kod aplikacji może wymagać aktualizacji z powodu tej zmiany.

Przestrzeń nazw WindowsMixedRealityUtilities

Przestrzeń nazw windowsMixedRealityUtilities została zmieniona z Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input na Microsoft.MixedReality.Toolkit.WindowsMixedReality (#6863).

Zaktualizuj instrukcje #using, aby usunąć błędy kompilacji.

Aktualizowanie wersji 2.1.0 do 2.2.0

Zmiany interfejsu API w wersji 2.2.0

IMixedRealityBoundarySystem.Contains

Ta metoda została wcześniej wyliczona w określonym, zdefiniowanym przez aparat Unity wyliczeniem eksperymentalnym. Teraz przyjmuje wyliczenie zdefiniowane przez zestaw narzędzi MRTK, które jest identyczne z wyliczeniowym aparatu Unity. Ta zmiana pomaga przygotować zestaw narzędzi MRTK do przyszłych interfejsów API granic aparatu Unity.

MixedRealityServiceProfileAttribute

Aby lepiej opisać wymagania dotyczące obsługi profilu, element MixedRealityServiceProfileAttribute został zaktualizowany w celu dodania opcjonalnej kolekcji wykluczonych typów. W ramach tej zmiany właściwość ServiceType została zmieniona z Type na Type[] i zmieniono jej nazwę na RequiredTypes.

Dodano również drugą właściwość ExcludedTypes.

Aktualizowanie wersji 2.0.0 do 2.1.0

Zmiany interfejsu API w wersji 2.1.0

BaseNearInteractionTouchable

Element BaseNearInteractionTouchable został zmodyfikowany w celu oznaczenia OnValidate metody jako wirtualnej. Klasy rozszerzające BaseNearInteractionTouchable (np. NearInteractionTouchableUnityUI) zostały zaktualizowane w celu odzwierciedlenia tej zmiany.

ColliderNearInteractionTouchable

Klasa ColliderNearInteractionTouchable została uznana za przestarzałą. Zaktualizuj odwołania do kodu, aby użyć polecenia BaseNearInteractionTouchable.

IMixedRealityMouseDeviceManager

Dodane

IMixedRealityMouseDeviceManager dodano CursorSpeed właściwości i WheelSpeed . Te właściwości umożliwiają aplikacjom określenie wartości mnożnika, za pomocą której będzie skalowana odpowiednio szybkość kursora i koła.

Jest to zmiana powodująca niezgodność i wymaga modyfikacji istniejących implementacji menedżera urządzeń myszy.

Uwaga

Ta zmiana nie jest wsteczna zgodna z wersją 2.0.0.

Przestarzałe

Właściwość MouseInputProfile została oznaczona jako przestarzała i zostanie usunięta z przyszłej wersji zestawu narzędzi Microsoft Mixed Reality Toolkit. Zaleca się, aby kod aplikacji nie używał już tej właściwości.

Możliwość interakcji

Następujące metody i właściwości zostały wycofane i zostaną usunięte z przyszłej wersji zestawu narzędzi Microsoft Mixed Reality Toolkit. Zaleca się zaktualizowanie kodu aplikacji zgodnie ze wskazówkami zawartymi w przestarzałym atrybucie i wyświetlonym w konsoli programu .

  • 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

Klasa NearInteractionTouchableSurface została dodana i teraz służy jako klasa bazowa dla NearInteractionTouchable i NearInteractionTouchableUnityUI.

Zmiany profilu w wersji 2.1.0

Profil śledzenia rąk

Siatka ręczna i wspólne wizualizacje mają teraz osobny edytor i ustawienia odtwarzacza. Profil śledzenia rąk został zaktualizowany, aby umożliwić ustawienie tych wizualizacji na; Nic, wszystko, edytor lub odtwarzacz.

Tryby wizualizacji ręcznej

W celu poprawnej pracy z wersją 2.1.0 może być konieczne zaktualizowanie niestandardowych profilów śledzenia rąk.

Uwaga

Ta zmiana nie jest wsteczna zgodna z wersją 2.0.0.

Profil symulacji danych wejściowych

System symulacji wejściowej został uaktualniony, co powoduje zmianę kilku ustawień w profilu symulacji wejściowej. Niektórych zmian nie można migrować automatycznie, a użytkownicy mogą stwierdzić, że profile używają wartości domyślnych.

  1. Wszystkie powiązania KeyCode i myszy w profilu zostały zastąpione ogólną KeyBinding strukturą, która przechowuje typ powiązania (klawisz lub mysz), a także rzeczywisty kod powiązania (kod klucza lub przycisku myszy). Struktura ma własnego inspektora, który umożliwia ujednolicone wyświetlanie i oferuje narzędzie "automatyczne wiązanie", aby szybko ustawić powiązania klawiszy, naciskając odpowiedni klawisz zamiast wybierać z ogromnej listy rozwijanej.

    • FastControlKey
    • ToggleLeftHandKey
    • PrzełącznikRightHandKey
    • LeftHandManipulationKey
    • RightHandManipulationKey
  2. MouseLookToggle element został wcześniej uwzględniony w wyliczenie MouseLookButton jako InputSimulationMouseButton.Focused, jest to teraz osobna opcja. Po włączeniu tej opcji aparat będzie obracał się myszą po zwolnieniu przycisku do momentu naciśnięcia klawisza ucieczki.

  3. HandDepthMultiplier Wartość domyślna została obniżona z 0,1 do 0,03, aby uwzględnić pewne zmiany w symulacji wejściowej. Jeśli aparat przesuwa się zbyt szybko podczas przewijania, spróbuj obniżyć tę wartość.

  4. Klucze do obracania rąk zostały usunięte, obracanie rąk jest teraz kontrolowane przez mysz, jak również. Przytrzymanie HandRotateButton (Ctrl) wraz z klawiszem manipulowania lewą/prawą ręką (LShift/Spacja) umożliwi obracanie rąk.

  5. Nowa oś "UpDown" została wprowadzona do listy osi wejściowych. Pozwala to sterować ruchem kamery w pionie i domyślnie do kluczy Q/E, a także przycisków wyzwalacza kontrolera.

Aby uzyskać więcej informacji na temat tych zmian, zobacz artykuł dotyczący usługi symulacji danych wejściowych .

Profil dostawcy danych myszy

Profil dostawcy danych myszy został zaktualizowany w celu uwidocznienia nowych CursorSpeed właściwości i WheelSpeed . Istniejące profile niestandardowe będą automatycznie miały podane wartości domyślne. Po zapisaniu profilu te nowe wartości zostaną utrwalone.

Profil mapowania kontrolera

Niektóre osie i typy danych wejściowych zostały zaktualizowane w wersji 2.1.0, szczególnie wokół platformy OpenVR. Pamiętaj, aby podczas uaktualniania wybrać pozycję MixedRealityToolkit - Utilities - Update - Controller Mapping Profiles (Zestaw narzędziowy> —> aktualizacja —> profile mapowania kontrolera). Spowoduje to zaktualizowanie wszystkich niestandardowych profilów mapowania kontrolera przy użyciu zaktualizowanych osi i danych, pozostawiając niestandardowe przypisane akcje wejściowe bez zmian.

Aktualizowanie wersji RC2 do wersji 2.0.0

Między wersjami RC2 i 2.0.0 zestawu narzędzi Microsoft Mixed Reality Toolkit wprowadzono zmiany, które mogą mieć wpływ na istniejące projekty. W tym dokumencie opisano te zmiany i sposób aktualizowania projektów do wersji 2.0.0.

Zmiany interfejsu API w wersji 2.0.0

Od czasu wydania wersji RC2 wprowadzono wiele zmian interfejsu API, w tym niektóre, które mogą spowodować przerwanie istniejących projektów. W poniższych sekcjach opisano zmiany, które wystąpiły między wersjami RC2 i 2.0.0.

MixedRealityToolkit

Następujące właściwości publiczne obiektu MixedRealityToolkit zostały uznane za przestarzałe.

  • RegisteredMixedRealityServices Nie zawiera już kolekcji zarejestrowanych usług rozszerzeń i dostawców danych.

Aby uzyskać dostęp do usług rozszerzeń, użyj polecenia MixedRealityServiceRegistry.TryGetService<T>. Aby uzyskać dostęp do dostawców danych, rzutuj wystąpienie usługi na IMixedRealityDataProviderAccess i użyj polecenia GetDataProvider<T>.

Użyj lub MixedRealityServiceRegistryCoreServices zamiast tego dla następujących przestarzałych właściwości

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

CoreServices

Klasa CoreServices zastępuje metody dostępu systemu statycznego (np. BoundarySystem) znalezionych MixedRealityToolkit w obiekcie .

Ważne

Systemowe MixedRealityToolkit metody dostępu zostały wycofane w wersji 2.0.0 i zostaną usunięte w przyszłej wersji zestawu narzędzi MRTK.

Poniższy przykład kodu ilustruje stary i nowy wzorzec.

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

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

Użycie nowej klasy CoreSystem zapewni, że kod aplikacji nie będzie musiał aktualizować, jeśli zmienisz aplikację na użycie innego rejestratora usług (np. jednego z eksperymentalnych menedżerów usług).

IMixedRealityRaycastProvider

Po dodaniu elementu IMixedRealityRaycastProvider profil konfiguracji systemu wejściowego został zmieniony. Jeśli masz profil niestandardowy, podczas uruchamiania aplikacji mogą wystąpić błędy na poniższej ilustracji.

Wybieranie dostawcy Raycast 1

Aby rozwiązać ten problem, dodaj wystąpienie IMixedRealityRaycastProvider do profilu systemu wejściowego.

Wybieranie dostawcy Raycast 2

System zdarzeń

  • Stare IMixedRealityEventSystem metody interfejsu Register API i Unregister zostały oznaczone jako przestarzałe. Są one zachowywane w celu zapewnienia zgodności z poprzednimi wersjami.
  • InputSystemGlobalListener został oznaczony jako przestarzały. Jego funkcjonalność nie uległa zmianie.
  • BaseInputHandler klasa bazowa została zmieniona z na InputSystemGlobalListenerInputSystemGlobalHandlerListener. Jest to zmiana powodująca niezgodność dla wszystkich elementów podrzędnych .BaseInputHandler

Motywacja za zmianą

Stary interfejs API Register systemu zdarzeń i Unregister może potencjalnie powodować wiele problemów w czasie wykonywania, co jest głównym elementem:

  • Jeśli składnik rejestruje się w przypadku zdarzeń globalnych, otrzyma globalne zdarzenia wejściowe wszystkich typów.
  • Jeśli jeden ze składników obiektu rejestruje się w przypadku globalnych zdarzeń wejściowych, wszystkie składniki tego obiektu otrzymają globalne zdarzenia wejściowe wszystkich typów.
  • Jeśli dwa składniki tego samego obiektu rejestrują się w zdarzeniach globalnych, a następnie jeden jest wyłączony w czasie wykonywania, drugi przestaje odbierać zdarzenia globalne.

Nowy interfejs API RegisterHandler i UnregisterHandler:

  • Zapewnia jawną i szczegółową kontrolę nad tym, które zdarzenia wejściowe powinny być nasłuchiwane globalnie i które powinny być skoncentrowane.
  • Zezwala wielu składnikom na tym samym obiekcie na nasłuchiwanie zdarzeń globalnych niezależnie od siebie.

Jak przeprowadzić migrację

  • Jeśli interfejs API był wywoływany Register/Unregister bezpośrednio wcześniej, zastąp te wywołania wywołaniami do .RegisterHandler/UnregisterHandler Użyj interfejsów obsługi implementowania jako parametrów ogólnych. Jeśli implementujesz wiele interfejsów, a kilka z nich nasłuchuje globalnych zdarzeń wejściowych, wywołaj RegisterHandler wiele razy.
  • Jeśli dziedziczysz z InputSystemGlobalListenerklasy , zmień dziedziczenie na InputSystemGlobalHandlerListener. Implementowanie RegisterHandlers i UnregisterHandlers abstrakcyjne metody. W wywołaniu inputSystem.RegisterHandler implementacji (inputSystem.UnregisterHandler) w celu zarejestrowania się we wszystkich interfejsach obsługi, dla których chcesz nasłuchiwać zdarzeń globalnych.
  • Jeśli dziedziczysz z BaseInputHandlermetody , zaimplementuj RegisterHandlers i UnregisterHandlers abstrakcyjne metody (takie same jak w przypadku InputSystemGlobalListenerprogramu ).

Przykłady migracji

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

Świadomość przestrzenna

Interfejsy IMixedRealitySpatialAwarenessSystem i IMixedRealitySpatialAwarenessObserver miały wiele zmian powodujących niezgodność, jak opisano poniżej.

Zmiany

Zmieniono nazwy następujących metod, aby lepiej opisać ich użycie.

  • IMixedRealitySpatialAwarenessSystem.CreateSpatialObjectParent zmieniono nazwę , aby IMixedRealitySpatialAwarenessSystem.CreateSpatialAwarenessObservationParent wyjaśnić jego użycie.

Dodatki

W oparciu o opinie klientów dodano obsługę łatwego usuwania wcześniej obserwowanych danych świadomości przestrzennej.

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

Rozwiązują

Niektóre składniki narzędzia do rozwiązywania problemów i klasa menedżera programu SolverHandler zostały zmienione w celu naprawienia różnych usterek i bardziej intuicyjnego użycia.

Program solverHandler

  • Klasa nie rozciąga się już od ControllerFinder
  • TrackedObjectToReference właściwość publiczna przestarzała i została zmieniona na TrackedTargetType
  • TrackedObjectType przestarzałe wartości & prawego kontrolera. Zamiast tego użyj MotionController wartości lub HandJoint zaktualizuj nową TrackedHandedness właściwość, aby ograniczyć śledzenie do lewego lub prawego kontrolera

InBetween

  • TrackedObjectForSecondTransform właściwość publiczna przestarzała i została zmieniona na SecondTrackedObjectType
  • AttachSecondTransformToNewTrackedObject() został usunięty. Aby zaktualizować rozwiązanie, zmodyfikuj właściwości publiczne (tj SecondTrackedObjectType. )

SurfaceMagatyzm

  • MaxDistance właściwość publiczna przestarzała i została zmieniona na MaxRaycastDistance
  • CloseDistance właściwość publiczna przestarzała i została zmieniona na ClosestDistance
  • Wartość domyślna dla RaycastDirectionMode jest teraz TrackedTargetForward , która promienie w kierunku śledzonej transformacji docelowej do przodu
  • OrientationModewartości Vertical wyliczenia i Full, zostały zmienione odpowiednio na TrackedTarget i SurfaceNormal
  • KeepOrientationVertical dodano właściwość publiczną w celu kontrolowania, czy orientacja skojarzonego obiektu GameObject pozostaje pionowa

Przyciski

  • PressableButton teraz właściwość ma DistanceSpaceMode ustawioną Local na wartość domyślną. Umożliwia to skalowanie przycisków, gdy nadal można je nacisnąć

Przycinanie sfery

Interfejs ClippingSphere został zmieniony na dublowanie interfejsów API znalezionych w clippingBox i ClippingPlane.

Właściwość Radius ClippingSphere jest teraz niejawnie obliczana na podstawie skali transformacji. Zanim deweloperzy będą musieli określić promień ClippingSphere w inspektorze. Jeśli chcesz zmienić promień, po prostu zaktualizuj skalę transformacji przekształcenia tak, jak zwykle.

NearInteractionTouchable i PokePointer

  • Funkcja NearInteractionTouchable nie obsługuje już obsługi kanwy interfejsu użytkownika aparatu Unity. Teraz należy użyć klasy NearInteractionTouchableUnityUI dla interfejsu użytkownika aparatu Unity.
  • ColliderNearInteractionTouchable to nowa klasa bazowa do dotyku oparta na zderzakach, tj. każda dotykowa z wyjątkiem NearInteractionTouchableUnityUI.
  • Element BaseNearInteractionTouchable.DistFront został przeniesiony i zmieniono nazwę na PokePointer.TouchableDistance To jest odległość i którą pokePointer może wchodzić w interakcje z elementami dotykowymi. Wcześniej każdy touchable miał własną maksymalną odległość interakcji, ale teraz jest to zdefiniowane w PokePointer, co umożliwia lepszą optymalizację.
  • Nazwa elementu BaseNearInteractionTouchable.DistBack została zmieniona na PokeThreshold To sprawia, że pokeThreshold jest odpowiednikiem DebounceThreshold. Touchable jest aktywowany po skrzyżowaniu PokeThreshold i zwolniony po przekroczeniu debounceThreshold.

Readonlyattribute

Microsoft.MixedReality.Toolkit Przestrzeń nazw została dodana do ReadOnlyAttribute, BeginReadOnlyGroupAttributei EndReadOnlyGroupAttribute.

WskaźnikClickHandler

Klasa PointerClickHandler została przestarzała. PointerHandler Zamiast tego należy użyć elementu , który zapewnia tę samą funkcjonalność.

Obsługa kliknięcia urządzenia HoloLens

Mapowania kontrolerów urządzenia HoloLens zmieniły się z nieobsługiwanego WindowsMixedRealityController na nieobsługiwaną WindowsMixedRealityGGVHand. Aby to uwzględnić, automatyczny aktualizator będzie uruchamiany po raz pierwszy po otwarciu profilu ControllerMapping. Otwórz wszystkie profile niestandardowe co najmniej raz po uaktualnieniu do wersji 2.0.0, aby wyzwolić ten jednorazowy krok migracji.

InterakcjaHighlight

Klasa InteractableHighlight została przestarzała. InteractableOnFocus Zamiast tego należy użyć klasy i FocusInteractableStates elementu zawartości. Aby utworzyć nowy Theme zasób dla InteractableOnFocuselementu , kliknij prawym przyciskiem myszy w oknie projektu i wybierz pozycję Utwórz>Mixed Reality Toolkit>Interactable>Theme.

HandInteractionPanZoom

HandInteractionPanZoom został przeniesiony do przestrzeni nazw interfejsu użytkownika, ponieważ nie był to składnik wejściowy. HandPanEventData została również przeniesiona do tej przestrzeni nazw i uproszczona w celu odpowiadania innym danym zdarzeń interfejsu użytkownika.

Zmiany nazwy zestawu w wersji 2.0.0

W wersji 2.0.0 wszystkie oficjalne nazwy zestawów zestawu Mixed Reality Toolkit i skojarzone z nimi pliki definicji zestawu (asmdef) zostały zaktualizowane w celu dopasowania do następującego wzorca.

Microsoft.MixedReality.Toolkit[.<name>]

W niektórych przypadkach scalono wiele zestawów w celu utworzenia lepszej jedności ich zawartości. Jeśli projekt używa niestandardowych plików asmdef, może wymagać aktualizacji.

W poniższych tabelach opisano sposób mapowania nazw plików RC2 .asmdef na wersję 2.0.0. Wszystkie nazwy zestawów są zgodne z nazwą pliku 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 Usunięto, użyj polecenia 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