Aktualizowanie z wcześniejszych wersji — MRTK2
- Uaktualnianie do nowej wersji zestawu narzędzi MRTK
- Od 2.3.0 do 2.4.0
- Od 2.2.0 do 2.3.0
- Od 2.1.0 do 2.2.0
- Od 2.0.0 do 2.1.0
- RC2 do 2.0.0
Znajdowanie bieżącej wersji
Postępuj zgodnie z tymi instrukcjami, aby dowiedzieć się, której wersji zestawu narzędzi MRTK obecnie używasz:
- Otwieranie projektu zestawu narzędzi MRTK w a środowisku Unity
- Przejdź do folderu "MixedRealityToolkit" w oknie Projektu
- 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:
- Przejdź do folderu "Mixed Reality Toolkit Foundation"
- Kliknij plik "package.json", aby wyświetlić podgląd aparatu Unity lub otworzyć go za pomocą edytora tekstów
- 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
- Zapisz kopię bieżącego projektu na wypadek trafienia dowolnych snagów w dowolnym momencie w krokach uaktualniania.
- Zamykanie aparatu Unity
- 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.
- 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.
- Otwórz ponownie projekt w a środowisku Unity
- 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
- 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.
- 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
- 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.
- Zapisz kopię bieżącego projektu.
- Zamykanie aparatu Unity
- 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.
- 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.
- 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)
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.
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.
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.
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
MouseLookToggle
element został wcześniej uwzględniony w wyliczenieMouseLookButton
jakoInputSimulationMouseButton.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.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ść.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.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 MixedRealityServiceRegistry
CoreServices
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.
Aby rozwiązać ten problem, dodaj wystąpienie IMixedRealityRaycastProvider do profilu systemu wejściowego.
System zdarzeń
- Stare
IMixedRealityEventSystem
metody interfejsuRegister
API iUnregister
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 naInputSystemGlobalListener
InputSystemGlobalHandlerListener
. 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łajRegisterHandler
wiele razy. - Jeśli dziedziczysz z
InputSystemGlobalListener
klasy , zmień dziedziczenie naInputSystemGlobalHandlerListener
. ImplementowanieRegisterHandlers
iUnregisterHandlers
abstrakcyjne metody. W wywołaniuinputSystem.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
BaseInputHandler
metody , zaimplementujRegisterHandlers
iUnregisterHandlers
abstrakcyjne metody (takie same jak w przypadkuInputSystemGlobalListener
programu ).
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ę , abyIMixedRealitySpatialAwarenessSystem.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 naTrackedTargetType
TrackedObjectType
przestarzałe wartości & prawego kontrolera. Zamiast tego użyjMotionController
wartości lubHandJoint
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 naSecondTrackedObjectType
AttachSecondTransformToNewTrackedObject()
został usunięty. Aby zaktualizować rozwiązanie, zmodyfikuj właściwości publiczne (tjSecondTrackedObjectType
. )
SurfaceMagatyzm
MaxDistance
właściwość publiczna przestarzała i została zmieniona naMaxRaycastDistance
CloseDistance
właściwość publiczna przestarzała i została zmieniona naClosestDistance
- Wartość domyślna dla
RaycastDirectionMode
jest terazTrackedTargetForward
, która promienie w kierunku śledzonej transformacji docelowej do przodu OrientationMode
wartościVertical
wyliczenia iFull
, zostały zmienione odpowiednio naTrackedTarget
iSurfaceNormal
KeepOrientationVertical
dodano właściwość publiczną w celu kontrolowania, czy orientacja skojarzonego obiektu GameObject pozostaje pionowa
Przyciski
PressableButton
teraz właściwość maDistanceSpaceMode
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
, BeginReadOnlyGroupAttribute
i 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 InteractableOnFocus
elementu , 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 |