Przyciski — MRTK2
Przycisk umożliwia użytkownikowi wyzwolenie natychmiastowej akcji. Jest to jeden z najbardziej podstawowych składników rzeczywistości mieszanej. Zestaw narzędzi MRTK udostępnia różne typy prefab przycisków.
Prefabki przycisku w zestawie narzędzi MRTK
Przykłady prefabów przycisku w MRTK/SDK/Features/UX/Interactable/Prefabs
folderze
Przyciski oparte na obrazie/graficznym interfejsie użytkownika aparatu Unity
UnityUIInteractableButton.prefab
PressableButtonUnityUI.prefab
PressableButtonUnityUICircular.prefab
PressableButtonHoloLens2UnityUI.prefab
Przyciski oparte na zderzakach
PressableButtonHoloLens2
PressableButtonHoloLens2Unplated
PressableButtonHoloLens2Circular
przycisk w stylu powłoki HoloLens 2 z płytą wsteczną, która obsługuje różne wizualne opinie, takie jak światło obramowania, światło zbliżeniowe i skompresowana płyta przednia
przycisk w stylu powłoki HoloLens 2 bez backplate
przycisk w stylu powłoki HoloLens 2 z okrągłym kształtem
PressableButtonHoloLens2_32x96
PressableButtonHoloLens2Bar3H
PressableButtonHoloLens2Bar3V
Szeroki przycisk w stylu powłoki HoloLens 2 32x96mm
Poziomy pasek przycisków HoloLens 2 z udostępnioną płytą wsteczną
Pionowy pasek przycisków HoloLens 2 z udostępnioną płytą wsteczną
PressableButtonHoloLens2ToggleCheckBox_32x32
PressableButtonHoloLens2ToggleSwitch_32x32
PressableButtonHoloLens2ToggleRadio_32x32
pole wyboru w stylu powłoki HoloLens 2 32x32mm
przełącznik w stylu powłoki HoloLens 2 32x32mm
radio w stylu HoloLens 2 32x32mm
PressableButtonHoloLens2ToggleCheckBox_32x96
PressableButtonHoloLens2ToggleSwitch_32x96
PressableButtonHoloLens2ToggleRadio_32x96
pole wyboru w stylu powłoki HoloLens 2 32x96mm
przełącznik w stylu powłoki HoloLens 2 32x96mm
radio w stylu powłoki HoloLens 2 32x96mm
Promieniowe
Pole wyboru
Przełącznik przełącznika
Przycisk promieniowy
Pole wyboru
Przełącznik
ButtonHoloLens1
PressableRoundButton
Przycisk podstawowy przycisku
Przycisk stylu powłoki urządzenia HoloLens 1. generacji
Przycisk naciśnięcia kształtu okrągłego
Przycisk Podstawowy
Element Button
(Assets/MRTK/SDK/Features/UX/Interactable/Prefabs/Button.prefab) jest oparty na koncepcji Interakcji , aby zapewnić łatwe kontrolki interfejsu użytkownika dla przycisków lub innych typów powierzchni interaktywnych. Przycisk punktu odniesienia obsługuje wszystkie dostępne metody wejściowe, w tym wyrażane dane wejściowe dla bliskich interakcji, a także spojrzenie + naciśnięcie powietrza dla odległych interakcji. Możesz również użyć polecenia głosowego, aby wyzwolić przycisk.
PressableButtonHoloLens2
(Assets/MRTK/SDK/Features/UX/Interactable/Prefabs/PressableButtonHoloLens2.prefab) jest HoloLens 2 przycisk stylu powłoki, który obsługuje precyzyjny ruch przycisku dla danych wejściowych śledzenia bezpośrednich rąk. Łączy Interactable
skrypt ze skryptem PressableButton
.
W przypadku HoloLens 2 zaleca się używanie przycisków z nieprzezroczystą płytą wsteczną. Przyciski przezroczyste nie są zalecane z powodu tych problemów z użytecznością i stabilnością:
- Ikona i tekst są trudne do odczytania w środowisku fizycznym
- Trudno zrozumieć, kiedy wyzwalane jest zdarzenie
- Hologramy wyświetlane za pośrednictwem przezroczystej płaszczyzny mogą być niestabilne za pomocą stabilizacji LSR głębokości HoloLens 2
Jak używać przycisków z możliwością naciśnięcia
Przyciski oparte na interfejsie użytkownika aparatu Unity
Utwórz kanwę w scenie (GameObject —> interfejs użytkownika —> kanwa). W panelu Inspector (Inspektor) dla kanwy:
- Kliknij pozycję "Konwertuj na kanwę zestawu narzędzi MRTK"
- Kliknij pozycję "Add NearInteractionTouchableUnityUI"
- Ustaw skalę X, Y i Z składnika przekształcania rect na 0,001
Następnie przeciągnij ( PressableButtonUnityUI
Assets/MRTK/SDK/Features/UX/Interactable/Prefabs/PressableButtonUnityUI.prefab), PressableButtonUnityUICircular
(Assets/MRTK/SDK/Features/UX/Interactable/Prefabs/PressableButtonUnityUICircular.prefab) lub PressableButtonHoloLens2UnityUI
(Assets/MRTK/SDK/Features/UX/Interactable/Prefabs/PressableButtonHoloLens2UnityUI.prefab) na kanwie.
Przyciski oparte na zderzakach
Po prostu przeciągnij PressableButtonHoloLens2
(Assets/MRTK/SDK/Features/UX/Interactable/Prefabs/PressableButtonHoloLens2.prefab) lub PressableButtonHoloLens2Unplated
(Assets/MRTK/SDK/Features/UX/Interactable/Prefabs/PressableButtonHoloLens2Unplated.prefab) do sceny. Te prefabryki przycisków są już skonfigurowane do przekazywania opinii audio-wizualnych dla różnych typów danych wejściowych, w tym wyrażanych danych wejściowych i wzrokowych.
Zdarzenia uwidocznione w prefabrykcie, a także składnik z możliwością interakcji mogą służyć do wyzwalania dodatkowych akcji. Przyciski z możliwością naciśnięcia w scenie HandInteractionExample używają zdarzenia OnClick interakcji, aby wyzwolić zmianę koloru modułu. To zdarzenie jest wyzwalane dla różnych typów metod wejściowych, takich jak spojrzenie, naciśnięcie powietrza, ray, a także naciśnięcie przycisku fizycznego za pomocą skryptu przycisku z możliwością naciśnięcia.
Można skonfigurować, gdy przycisk z możliwością naciśnięcia uruchamia zdarzenie OnClick za pośrednictwem PhysicalPressEventRouter
przycisku . Można na przykład ustawić polecenie OnClick do uruchomienia po pierwszym naciśnięciu przycisku, w przeciwieństwie do naciśnięcia i zwolnienia, ustawiając opcję Interakcja po kliknięciu na naciśnięcie zdarzenia przy naciśnięciu.
Aby wykorzystać określone informacje o stanie danych wejściowych rąk, można użyć zdarzeń przycisków z możliwością naciśnięcia — Początek dotyku, Koniec dotyku, Naciśnięcie przycisku, Przycisk zwolniony. Te zdarzenia nie będą jednak wyzwalane w odpowiedzi na naciśnięcie powietrza, prześwietlenie lub wejście oka. Aby obsługiwać zarówno interakcje bliskie, jak i dalekie, zaleca się użycie zdarzenia OnClick z interakcją.
Stany interakcji
W stanie bezczynności płyta przednia przycisku nie jest widoczna. Gdy palec zbliża się lub kursor z wejścia wzroku jest skierowany do powierzchni, świecąca krawędź płyty przedniej staje się widoczna. Na przedniej powierzchni płyty znajduje się dodatkowe podkreślenie położenia palca. Po naciśnięciu palcem przednia płyta porusza się palcem. Gdy palec dotyka powierzchni przedniej płyty, pokazuje subtelny efekt impulsu, aby przekazać wizualną opinię o punkcie dotykowym.
W HoloLens 2 przycisku w stylu powłoki istnieje wiele podpowiedzi wizualnych i zapewniania, aby zwiększyć zaufanie użytkownika do interakcji.
Światło zbliżeniowe | Wyróżnienie fokusu | Kompresowanie klatki | Pulse on trigger |
Subtelny efekt impulsu jest wyzwalany przez przycisk z możliwością naciśnięcia, który wyszukuje kontrolki ProximityLight(s), które działają na aktualnie współdziałającym wskaźniku. Jeśli zostaną znalezione jakiekolwiek światła zbliżeniowe, wywoływana ProximityLight.Pulse
jest metoda , która automatycznie animuje parametry cieniowania w celu wyświetlenia impulsu.
Właściwości inspektora
ZderzaczBox Collider
box do przedniej płyty przycisku.
Przycisk z możliwością naciśnięcia Logika ruchu przycisku z interakcją z naciśnięciem dłoni.
Router zdarzeń prasy fizycznej Ten skrypt wysyła zdarzenia z interakcji naciśnięcia ręcznego do interakcji z interakcją.
Interakcja z możliwością interakcji obsługuje różne typy stanów interakcji i zdarzeń. Urządzenia HoloLens patrzące, gesty i wejście głosowe i immersywny kontroler ruchu zestawu słuchawkowego są bezpośrednio obsługiwane przez ten skrypt.
Źródło audio Źródło audio aparatu Unity dla klipów zwrotnych audio.
NearInteractionTouchable.cs Wymagane, aby każdy obiekt był dotykalny za pomocą przegubowych danych wejściowych dłoni.
Układ prefab
Obiekt ButtonContent zawiera tabliczkę przednią, etykietę tekstową i ikonę. FrontPlate reaguje na bliskość palca indeksu przy użyciu cieniowania Button_Box. Pokazuje świecące obramowania, światło zbliżeniowe i efekt pulsu na dotyku. Etykieta tekstowa jest dokonana za pomocą elementu TextMesh Pro. Widoczność seeItSayItLabel jest kontrolowana przez motyw Interactable.
Jak zmienić ikonę i tekst
Przyciski MRTK używają ButtonConfigHelper
składnika, aby ułatwić zmianę ikony przycisku, tekstu i etykiety. (Pamiętaj, że niektóre pola mogą być nieobecne, jeśli elementy nie są obecne na wybranym przycisku).
Tworzenie i modyfikowanie zestawów ikon
Zestaw ikon to udostępniony zestaw zasobów ikon używanych przez ButtonConfigHelper
składnik. Obsługiwane są trzy style ikon.
- Ikony czworokąta są renderowane na czworokącie przy użyciu elementu
MeshRenderer
. Jest to domyślny styl ikony. - Ikony sprite są renderowane przy użyciu elementu
SpriteRenderer
. Jest to przydatne, jeśli wolisz zaimportować ikony jako arkusz sprite lub chcesz, aby zasoby ikony były udostępniane składnikom interfejsu użytkownika aparatu Unity. Aby użyć tego stylu, należy zainstalować pakiet Sprite Editor (Windows —> Menedżer pakietów —> 2D Sprite) - Ikony znaków są renderowane przy użyciu
TextMeshPro
składnika. Jest to przydatne, jeśli wolisz użyć czcionki ikony. Aby użyć czcionki ikony HoloLens, należy utworzyćTextMeshPro
zasób czcionki.
Aby zmienić styl używany przez przycisk, rozwiń listę rozwijaną Ikony w menu rozwijanym ButtonConfigHelper i wybierz z listy rozwijanej Styl ikony .
Aby utworzyć nową ikonę przycisku:
W oknie Projekt kliknij prawym przyciskiem myszy pozycję Zasoby , aby otworzyć menu kontekstowe. (Możesz również kliknąć prawym przyciskiem myszy dowolne puste miejsce w folderze Assets lub jednym z jego podfolderów).
Wybierz pozycję Utwórz > zestaw narzędzi Mixed Reality > Toolkit>.
Aby dodać ikony czworokąta i sprite, wystarczy przeciągnąć je do odpowiednich tablic. Aby dodać ikony Char, należy najpierw utworzyć i przypisać zasób czcionki.
W zestawie narzędzi MRTK 2.4 i nowszych zalecamy przeniesienie tekstur ikon niestandardowych do zestawu ikon. Aby uaktualnić zasoby we 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)
Importowanie pakietu Microsoft.MixedRealityToolkit.Unity.Tools wymaganego do uaktualnienia przycisków.
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.
Tworzenie elementu zawartości czcionki ikony urządzenia HoloLens
Najpierw zaimportuj czcionkę ikony do aparatu Unity. Na maszynach z systemem Windows można znaleźć domyślną czcionkę urządzenia HoloLens w pliku Windows/Font/holomdl2.ttf. Skopiuj i wklej ten plik do folderu Assets.
Następnie otwórz twórcę elementu zawartości czcionki TextMeshPro za pomocą okna > TextMeshPro > Twórca elementu zawartości czcionki. Poniżej przedstawiono zalecane ustawienia generowania atlasu czcionek holoLens. Aby dołączyć wszystkie ikony, wklej następujący zakres Unicode w polu Sekwencja znaków :
E700-E702,E706,E70D-E70E,E710-E714,E718,E71A,E71D-E71E,E720,E722,E728,E72A-E72E,E736,E738,E73F,E74A-E74B,E74D,E74F-E752,E760-E761,E765,E767-E769,E76B-E76C,E770,E772,E774,E777,E779-E77B,E782-E783,E785-E786,E799,E7A9-E7AB,E7AF-E7B1,E7B4,E7C8,E7E8-E7E9,E7FC,E80F,E821,E83F,E850-E859,E872-E874,E894-E895,E8A7,E8B2,E8B7,E8B9,E8D5,E8EC,E8FB,E909,E91B,E92C,E942,E95B,E992-E995,E9E9-E9EA,EA37,EA40,EA4A,EA55,EA96,EB51-EB52,EB65,EB9D-EBB5,EBCB-EBCC,EBCF-EBD3,EC03,EC19,EC3F,EC7A,EC8E-EC98,ECA2,ECD8-ECDA,ECE0,ECE7-ECEB,ED17,EE93,EFA9,F114-F120,F132,F181,F183-F186
Po wygenerowaniu elementu zawartości czcionki zapisz go w projekcie i przypisz go do pola Czcionka ikony ikony zestawu ikony . Zostanie wypełniona lista rozwijana Dostępne ikony . Aby udostępnić ikonę do użycia przez przycisk, kliknij ją. Zostanie ona dodana do listy rozwijanej Wybrane ikony i zostanie wyświetlona w ButtonConfigHelper.
obszarze Możesz opcjonalnie nadać ikonę tagowi. Umożliwia to ustawienie ikony w czasie wykonywania.
public void SetButtonToAdjust()
{
ButtonConfigHelper buttonConfigHelper = gameObject.GetComponent<ButtonConfigHelper>();
buttonConfigHelper.SetCharIconByName("AppBarAdjust");
}
Aby użyć przycisku Zestaw ikon, rozwiń listę rozwijaną Ikony w polu ButtonConfigHelper
Zestaw ikon i przypisz ją do pola Zestaw ikon .
Jak zmienić rozmiar przycisku
rozmiar przycisku w stylu powłoki HoloLens 2 wynosi 32x32mm. Aby dostosować wymiar, zmień rozmiar tych obiektów w prefab przycisku:
- Tablica frontonowa
- Czworokąt pod backplate
- Box Collider w katalogu głównym
Następnie kliknij przycisk Napraw ograniczenia w skrypie NearInteractionTouchable, który znajduje się w katalogu głównym przycisku.
Aktualizowanie rozmiaru FrontPlate 1
Aktualizowanie rozmiaru dostosowania rozmiaru
Aktualizowanie rozmiaru zderzacz box 3
Kliknij pozycję "Napraw granice"
Polecenie głosowe ('see-it, say-it')
Obsługa danych wejściowych mowy Skrypt z możliwością interakcji w przycisku z możliwością naciśnięcia już implementuje IMixedRealitySpeechHandler
element . Tutaj można ustawić słowo kluczowe polecenia głosowego.
Profil danych wejściowych mowy Ponadto musisz zarejestrować słowo kluczowe polecenia głosowego w globalnym profilu poleceń mowy.
Zobacz etykietę Say-it Prefab przycisku z możliwością naciśnięcia ma symbol zastępczy TextMesh Pro w obiekcie SeeItSayItLabel . Za pomocą tej etykiety możesz przekazać użytkownikowi słowo kluczowe polecenia głosowego.
Jak utworzyć przycisk od podstaw
Przykłady tych przycisków można znaleźć w scenie PressableButtonExample .
1. Tworzenie przycisku z możliwością naciśnięcia za pomocą modułu (tylko w pobliżu interakcji)
- Tworzenie modułu Unity (moduł obiektów 3D obiektu GameObject >> )
- Dodawanie
PressableButton.cs
skryptu - Dodawanie
NearInteractionTouchable.cs
skryptu
PressableButton
W panelu Inspector (Inspektor) przypisz obiekt modułu do wizualizacji przycisków ruchomych.
Po wybraniu modułu na obiekcie będzie widocznych wiele kolorowych warstw. Spowoduje to wizualizację wartości odległości w obszarze Ustawienia naciśnięcia klawiszy . Za pomocą uchwytów można skonfigurować czas uruchamiania naciśnięcia (przenieś obiekt) i czas wyzwalania zdarzenia.
Naciśnięcie przycisku spowoduje przeniesienie i wygenerowanie odpowiednich zdarzeń uwidocznionych w PressableButton.cs
skrypcie, takim jak TouchBegin(), TouchEnd(), ButtonPressed(), ButtonReleased().
Rozwiązywanie problemów
Jeśli przycisk wykonuje podwójne naciśnięcie, upewnij się, że właściwość Wymuszaj wypychanie z przodu jest aktywna, a płaszczyzna Start Push Distance znajduje się przed płaszczyzną Zbliżeniową interakcji . Płaszczyzna Near Interaction Touchable jest wskazywana przez niebieską płaszczyznę umieszczoną przed pochodzeniem białej strzałki w gif poniżej:
2. Dodawanie opinii wizualnej do podstawowego przycisku modułu
Funkcja MRTK Standard Shader udostępnia różne funkcje, które ułatwiają dodawanie opinii wizualnych. Utwórz materiał i wybierz pozycję cieniowania Mixed Reality Toolkit/Standard
. Możesz też użyć lub zduplikować jeden z istniejących materiałów /SDK/StandardAssets/Materials/
używanych przez cieniowanie standardowe MRTK.
Sprawdź Hover Light
i Proximity Light
w obszarze Opcje płynne. Umożliwia to wizualne opinie zarówno w przypadku interakcji zbliżeniowych (Zbliżeniowe światło) i daleko wskaźnika (Hover Light).
3. Dodawanie opinii audio do podstawowego przycisku modułu
Ponieważ PressableButton.cs
skrypt ujawnia zdarzenia, takie jak TouchBegin(), TouchEnd(), ButtonPressed(), ButtonReleased(), możemy łatwo przypisać opinie audio. Wystarczy dodać aparat Unity Audio Source
do obiektu modułu, a następnie przypisać klipy audio, wybierając pozycję AudioSource.PlayOneShot(). W folderze /SDK/StandardAssets/Audio/
można użyć MRTK_Select_Main i MRTK_Select_Secondary klipów audio.
4. Dodawanie stanów wizualnych i obsługa zdarzeń interakcji o wiele
Interakcja to skrypt, który ułatwia tworzenie stanu wizualnego dla różnych typów interakcji wejściowych. Obsługuje również zdarzenia o wiele interakcji. Dodaj Interactable.cs
i upuść obiekt modułu i przeciągnij go do pola Cel w obszarze Profile. Następnie utwórz nowy motyw o typie ScaleOffsetColorTheme. W tym motywie można określić kolor obiektu dla określonych stanów interakcji, takich jak Fokus i Naciśnięcie. Możesz również kontrolować skalowanie i przesunięcie. Sprawdź złagodzenie i ustaw czas trwania, aby przejście wizualne było bezproblemowe.
Zobaczysz, że obiekt odpowiada na obie strony (promienie dłoni lub kursor) i interakcje w pobliżu (ręka).
Przykłady przycisków niestandardowych
Na scenie HandInteractionExample zobacz przykłady fortepianu i okrągłych przycisków, które używają metody PressableButton
.
Każdy klawisz fortepianowy NearInteractionTouchable
ma PressableButton
przypisany skrypt i. Ważne jest, aby sprawdzić, czy kierunek przesyłania dalej lokalnegoNearInteractionTouchable
jest poprawny. Jest reprezentowana przez białą strzałkę w edytorze. Upewnij się, że strzałka znajduje się z dala od przedniej twarzy przycisku: