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 przycisków w zestawie narzędzi MRTK
Przykłady prefabów przycisku w MRTK/SDK/Features/UX/Interactable/Prefabs
folderze
Przyciski graficzne/obrazów interfejsu użytkownika aparatu Unity
UnityUIInteractableButton.prefab
PressableButtonUnityUI.prefab
PressableButtonUnityUICircular.prefab
PressableButtonHoloLens2UnityUI.prefab
Przyciski oparte na zderzakach
PressableButtonHoloLens2
PressableButtonHoloLens2Unplated
PressableButtonHoloLens2Circular
Przycisk w stylu powłoki urządzenia HoloLens 2 z płytą wsteczną, która obsługuje różne opinie wizualne, takie jak światło graniczne, światło zbliżeniowe i skompresowana płyta przednia
Przycisk w stylu powłoki urządzenia HoloLens 2 bez backplate
Przycisk w stylu powłoki urządzenia HoloLens 2 z okrągłym kształtem
PressableButtonHoloLens2_32x96
PressableButtonHoloLens2Bar3H
PressableButtonHoloLens2Bar3V
Szeroki przycisk w stylu powłoki urządzenia HoloLens 32x96mm
Poziomy pasek przycisków HoloLens 2 z udostępnionym zapleczem
Pionowy pasek przycisków HoloLens 2 z udostępnionym backplate
PressableButtonHoloLens2ToggleCheckBox_32x32
PressableButtonHoloLens2ToggleSwitch_32x32
PressableButtonHoloLens2ToggleRadio_32x32
Pole wyboru w stylu powłoki urządzenia HoloLens 32x32mm
Przełącznik w stylu powłoki urządzenia HoloLens 32x32mm
Radio w stylu powłoki holoLens 32x32mm
PressableButtonHoloLens2ToggleCheckBox_32x96
PressableButtonHoloLens2ToggleSwitch_32x96
PressableButtonHoloLens2ToggleRadio_32x96
Pole wyboru w stylu powłoki urządzenia HoloLens 32x96mm
Przełącznik w stylu powłoki urządzenia HoloLens 32x96mm
Radio w stylu powłoki urządzenia HoloLens 32x96mm
Promieniowe
Pole wyboru
Przełącznik przełącznika
Przycisk promieniowy
Pole wyboru
Przełącznik
ButtonHoloLens1
PressableRoundButton
Guzik
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 , która zapewnia łatwe kontrolki interfejsu użytkownika dla przycisków lub innych typów powierzchni interaktywnych. Przycisk linii bazowej obsługuje wszystkie dostępne metody wejściowe, w tym przegubowe 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) to przycisk stylu powłoki HoloLens 2, który obsługuje precyzyjny ruch przycisku dla bezpośrednich danych wejściowych śledzenia rąk. Łączy Interactable
skrypt ze skryptem PressableButton
.
W przypadku urządzenia HoloLens 2 zaleca się używanie przycisków z nieprzezroczystą płytą wsteczną. Przezroczyste przyciski nie są zalecane ze względu na te problemy z użytecznością i stabilnością:
- Ikona i tekst są trudne do odczytania w środowisku fizycznym
- Trudno zrozumieć, kiedy zdarzenie jest wyzwalane
- Hologramy wyświetlane przez przezroczystą płaszczyznę mogą być niestabilne z stabilizacją LSR głębokości urządzenia 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 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łć 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
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 tak, aby opinie audio-wizualne dla różnych typów danych wejściowych, w tym przegubowych danych wejściowych i spojrzenia.
Zdarzenia uwidocznione w samym prefabcie, 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, promienie ręczne, a także naciśnięcie przycisku fizycznego za pomocą skryptu przycisku z możliwością naciśnięcia.
Możesz skonfigurować, gdy przycisk z możliwością naciśnięcia uruchamia zdarzenie OnClick za pośrednictwem PhysicalPressEventRouter
przycisku . Można na przykład ustawić opcję OnClick na wyzwalanie, gdy przycisk jest najpierw naciskany, w przeciwieństwie do naciśnięcia i zwolnienia, ustawiając opcję Interakcja po kliknięciu na zdarzenie przy naciśnięciu.
Aby wykorzystać określone informacje o stanie danych wejściowych rąk, możesz użyć zdarzeń z możliwością naciśnięcia przycisków — Początek dotyku, Touch End, Naciśnięcie przycisku, Zwolnij przycisk. Te zdarzenia nie będą jednak wyzwalane w odpowiedzi na naciśnięcie powietrza, promienie ręczne lub wejście oczu. Aby obsługiwać zarówno interakcje bliskie, jak i dalekie, zaleca się użycie zdarzenia OnClick z interakcją.
Stany interakcji
W stanie bezczynności tablica przednia przycisku nie jest widoczna. W miarę zbliżania się palca lub kursora z wprowadzania danych wejściowych na powierzchnię, świecąca krawędź płyty przedniej staje się widoczna. Istnieje dodatkowe wyróżnienie położenia palca na powierzchni płyty przedniej. Po naciśnięciu palcem, płyta przednia porusza się palcem. Gdy palec dotyka powierzchni przedniej płyty, pokazuje subtelny efekt impulsu, aby przekazać wizualną opinię o punkcie dotykowym.
W przycisku w stylu powłoki holoLens 2 istnieje wiele wskazówek wizualnych i przystępnych cenowo, aby zwiększyć zaufanie użytkownika do interakcji.
Światło zbliżeniowe | Wyróżnienie fokusu | Kompresowanie klatki | Impuls na wyzwalaczu |
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 znajdziesz jakiekolwiek światła zbliżeniowe, ProximityLight.Pulse
wywoływana jest metoda , która automatycznie animuje parametry cieniowania w celu wyświetlenia impulsu.
Właściwości inspektora
ZderzaczBox Collider
box dla przedniej płyty przycisku.
Przycisk z możliwością naciśnięcia Logika przenoszenia przycisku za pomocą interakcji z naciśnięciem ręki.
Fizyczny router zdarzeń prasowych 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 i zdarzeń interakcji. Urządzenie HoloLens patrzy na dane wejściowe, gesty i głos oraz immersyjne wejście kontrolera ruchu nagłownego są obsługiwane bezpośrednio przez ten skrypt.
Źródło audio aparatu Unity źródła audio dla klipów opinii audio.
NearInteractionTouchable.cs Wymagane, aby każdy obiekt był dotykalny za pomocą przegubowych danych wejściowych rąk.
Układ prefab
Obiekt ButtonContent zawiera płytę 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 zestawu narzędzi MRTK używają ButtonConfigHelper
składnika, aby ułatwić zmianę ikony, tekstu i etykiety przycisku. (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 jeśli 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, musisz utworzyć zasóbTextMeshPro
czcionki.
Aby zmienić styl używany przez przycisk, rozwiń listę rozwijaną Ikony w menu rozwijanym ButtonConfigHelper i wybierz pozycję 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 wewnątrz Folder Assets lub jeden z jego podfolderów).
Wybierz pozycję Create Mixed Reality Toolkit Icon Set (Utwórz > zestaw narzędzi > rzeczywistości mieszanej>).
Aby dodać ikony czworokąta i sprite, po prostu przeciągnij je do odpowiednich tablic. Aby dodać ikony Char, musisz 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 metody ButtonConfigHelperMigrationHandler. (Zestaw narzędzi Mixed Reality Toolkit —> Narzędzia —> okno migracji —> Wybór programu obsługi migracji —> Microsoft.MixedReality.Toolkit.Utilities.ButtonConfigHelperMigrationHandler)
Zaimportowanie pakietu Microsoft.MixedRealityToolkit.Unity.Tools wymaganego do uaktualnienia przycisków.
Jeśli ikona nie zostanie znaleziona w domyślnym zestawie ikon ustawionym podczas migracji, w zestawie ikon niestandardowych zostanie utworzony zestaw ikon MixedRealityToolkit.Generated/CustomIconSets. Zostanie wyświetlone okno dialogowe wskazujące, że tak się stało.
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 folderze Windows/Fonts/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 zasobu czcionki. Poniżej przedstawiono zalecane ustawienia generowania atlasu czcionek urządzenia 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 zasobu czcionki zapisz go w projekcie i przypisz go do pola Czcionka ikony zestawu ikony . Lista rozwijana Dostępne ikony zostanie wypełniona. Aby udostępnić ikonę do użycia przez przycisk, kliknij ją. Zostanie on dodany do listy rozwijanej Wybrane ikony i będzie teraz wyświetlany 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ć zestawu ikon, wybierz przycisk, rozwiń listę rozwijaną Ikony w ButtonConfigHelper
obszarze i przypisz ją do pola Zestaw ikon.
Jak zmienić rozmiar przycisku
Rozmiar przycisku w stylu powłoki urządzenia HoloLens 2 wynosi 32x32mm. Aby dostosować wymiar, zmień rozmiar tych obiektów w prefab przycisku:
- FrontPlate
- Czworokąt pod backplate
- Zderzacz box w katalogu głównym
Następnie kliknij przycisk Fix Bounds (Napraw granice ) w skrycie NearInteractionTouchable, który znajduje się w katalogu głównym przycisku.
Aktualizowanie rozmiaru platformy FrontPlate
Aktualizowanie rozmiaru czworokąta
Aktualizowanie rozmiaru zderzaka box
Kliknij pozycję "Napraw ograniczenia"
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.
Ponadto profil danych wejściowych mowy należy zarejestrować słowo kluczowe polecenia głosowego w profilu globalnych poleceń mowy.
See-it, Say-it label Prefab przycisk do naciśnięcia ma symbol zastępczy TextMesh Pro etykietę pod obiektem 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 Aparatu 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 Ruchomy przycisk.
Po wybraniu modułu na obiekcie będzie widocznych wiele kolorowych warstw. Wizualizuje wartości odległości w obszarze Ustawienia naciśnięcia przycisku. Za pomocą uchwytów można skonfigurować czas uruchamiania naciskać (przenieść obiekt) i kiedy wyzwalać zdarzenie.
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 jest umieszczona przed płaszczyzną Zbliżenia interakcji touchable. Płaszczyzna bliskiej interakcji dotykowej jest wskazywana przez niebieską płaszczyznę umieszczoną przed początkiem białej strzałki w pliku GIF poniżej:
2. Dodawanie opinii wizualnych do podstawowego przycisku modułu
Moduł cieniowania standardowego zestawu narzędzi MRTK udostępnia różne funkcje, które ułatwiają dodawanie opinii wizualnych. Utwórz materiał i wybierz cieniator Mixed Reality Toolkit/Standard
. Możesz też użyć lub zduplikować jeden z istniejących materiałów używanych w narzędziu /SDK/StandardAssets/Materials/
MRTK Standard Shader.
Sprawdź Hover Light
i Proximity Light
w obszarze Fluent Options (Opcje fluent). Umożliwia to wizualne sprzężenie zwrotne zarówno w przypadku interakcji zbliżeniowych (Light), jak i skrajnych wskaźników (Hover Light).
3. Dodawanie opinii audio do podstawowego przycisku modułu
Ponieważ PressableButton.cs
skrypt uwidacznia 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 można użyć klipów /SDK/StandardAssets/Audio/
audio MRTK_Select_Main i MRTK_Select_Secondary.
4. Dodawanie stanów wizualizacji 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ż daleko idące zdarzenia interakcji. Dodaj Interactable.cs
i przeciągnij i upuść obiekt sześcianu 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 ręczne lub kursor wzroku) i interakcje zbliżeniowe (ręka).
Przykłady przycisków niestandardowych
Na scenie HandInteractionExample zobacz przykłady fortepianu i przycisków okrągłych, które używają funkcji PressableButton
.
Każdy fortepianowy PressableButton
ma przypisany skrypt i NearInteractionTouchable
. Ważne jest, aby sprawdzić, czy kierunek lokalnego NearInteractionTouchable
przekazywania jest poprawny. Jest reprezentowana przez białą strzałkę w edytorze. Upewnij się, że strzałka odchodzi od przedniej twarzy przycisku: