Przyciski — MRTK2

Przycisk główny

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 PressableButtonHoloLens2

PressableButtonHoloLens2Unplated PressableButtonHoloLens2Unplated

PressableButtonHoloLens2Circular 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_32x96PressableButtonHoloLens2_32x96

PressableButtonHoloLens2Bar3HPressableButtonHoloLens2Bar3H

PressableButtonHoloLens2Bar3VPressableButtonHoloLens2Bar3V

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_32x32PressableButtonHoloLens2ToggleCheckBox_32x32

PressableButtonHoloLens2ToggleSwitch_32x32PressableButtonHoloLens2ToggleSwitch_32x32

PressableButtonHoloLens2ToggleRadio_32x32PressableButtonHoloLens2ToggleRadio_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_32x96PressableButtonHoloLens2ToggleCheckBox_32x96

PressableButtonHoloLens2ToggleSwitch_32x96PressableButtonHoloLens2ToggleSwitch_32x96

PressableButtonHoloLens2ToggleRadio_32x96PressableButtonHoloLens2ToggleRadio_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

PromieniowePromieniowe

Pole wyboruPole wyboru

Przełącznik Przełącznik przełącznika

Przycisk promieniowy

Pole wyboru

Przełącznik

ButtonHoloLens1ButtonHoloLens1

PressableRoundButtonPressableRoundButton

Przycisk podstawowy przyciskuPrzycisk 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

Przycisk z płytą

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.

Jak korzystać z możliwości interakcji

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.

Jak używać zdarzeń

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ą.

Jak używać przycisków z możliwością naciśnięcia

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
Ś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

Struktura przycisku

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.

Układ przycisku

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).

Pomocnik konfiguracji 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:

  1. 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).

  2. Wybierz pozycję Utwórz > zestaw narzędzi Mixed Reality > Toolkit>.

    Zrzut ekranu przedstawiający element menu Zestaw ikon.

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.

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

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

Tworzenie przycisku 1

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.

Tworzenie przycisku 3

Tworzenie przycisku 2

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 .

Zestaw ikon przycisku

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:

  1. Tablica frontonowa
  2. Czworokąt pod backplate
  3. 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 dostosowania rozmiaru przycisku FrontPlate 1

Aktualizowanie rozmiaru dostosowania rozmiaru czworokąta przycisku 2

Aktualizowanie rozmiaru dostosowania rozmiaru przycisku zderzacz box 3

Kliknij pozycję "Napraw granice" Dostosowywanie rozmiaru przycisku 4

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 IMixedRealitySpeechHandlerelement . Tutaj można ustawić słowo kluczowe polecenia głosowego.

Mowa przycisków

Profil danych wejściowych mowy Ponadto musisz zarejestrować słowo kluczowe polecenia głosowego w globalnym profilu poleceń mowy.

Mowa przycisku 2

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.

Mowa przycisku 3

Jak utworzyć przycisk od podstaw

Przykłady tych przycisków można znaleźć w scenie PressableButtonExample .

Zaciśnięty moduł przycisku 0

1. Tworzenie przycisku z możliwością naciśnięcia za pomocą modułu (tylko w pobliżu interakcji)

  1. Tworzenie modułu Unity (moduł obiektów 3D obiektu GameObject >> )
  2. Dodawanie PressableButton.cs skryptu
  3. Dodawanie NearInteractionTouchable.cs skryptu

PressableButtonW panelu Inspector (Inspektor) przypisz obiekt modułu do wizualizacji przycisków ruchomych.

zaciśnięty moduł przycisku 3

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 modułu Buton 1z możliwością naciśnięcia sześciana przycisku 2

Naciśnięcie przycisku spowoduje przeniesienie i wygenerowanie odpowiednich zdarzeń uwidocznionych w PressableButton.cs skrypcie, takim jak TouchBegin(), TouchEnd(), ButtonPressed(), ButtonReleased().

Naciśnięcie modułu przycisku 1

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:

Składnik skryptu przycisku z możliwością naciśnięcia z wyróżnioną właściwością Wymuszaj wypychanie z przodu

Animowany przykład przesuwania odległości wypychania startu przed bliską interakcją płaszczyzny dotykowej

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.

Zaciśnięty moduł przycisku 4

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).

naciśnięciemodułu przycisku 5 z możliwością naciśnięcia modułu przycisku 2

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.

Sześcian przycisku zmożliwością naciśnięcia 7

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.

Wybieranie motywu profilu

Zobaczysz, że obiekt odpowiada na obie strony (promienie dłoni lub kursor) i interakcje w pobliżu (ręka).

Naciśnięcie modułu przycisku Uruchom 3Naciśnięcie modułu przycisku 4

Przykłady przycisków niestandardowych

Na scenie HandInteractionExample zobacz przykłady fortepianu i okrągłych przycisków, które używają metody PressableButton.

Pressable Custom1Dociśnięciowa niestandardowa 1, niestandardowa wersja 2

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:

Dociśnięty niestandardowy3

Zobacz też