Udostępnij za pośrednictwem


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

PressableButtonHoloLens2Unplated PressableButtonHoloLens2Unplated

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

PressableButtonHoloLens2Bar3HPressableButtonHoloLens2Bar3H

PressableButtonHoloLens2Bar3VPressableButtonHoloLens2Bar3V

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_32x32PressableButtonHoloLens2ToggleCheckBox_32x32

PressableButtonHoloLens2ToggleSwitch_32x32PressableButtonHoloLens2ToggleSwitch_32x32

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

PressableButtonHoloLens2ToggleSwitch_32x96PressableButtonHoloLens2ToggleSwitch_32x96

PressableButtonHoloLens2ToggleRadio_32x96PressableButtonHoloLens2ToggleRadio_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

PromieniowePromieniowe

Pole wyboruPole wyboru

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

Przycisk promieniowy

Pole wyboru

Przełącznik

ButtonHoloLens1ButtonHoloLens1

PressableRoundButtonPressableRoundButton

Podstawa przyciskuGuzik

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

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

Jak korzystać z możliwości interakcji

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.

Jak używać zdarzeń

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

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

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

Struktura przycisku

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.

Układ przycisku

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

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 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ób TextMeshPro 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:

  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 wewnątrz Folder Assets lub jeden z jego podfolderów).

  2. Wybierz pozycję Create Mixed Reality Toolkit Icon Set (Utwórz > zestaw narzędzi > rzeczywistości mieszanej>).

    Zrzut ekranu przedstawiający element menu Zestaw ikon.

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.

Okno uaktualniania — okno dialogowe

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.

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

Tworzenie przycisku 1

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.

Tworzenie przycisku 3

Tworzenie przycisku 2

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.

Zestaw ikon przycisku

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:

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

Aktualizowanie rozmiaru czworokąta Dostosowywanie rozmiaru przycisku 2

Aktualizowanie rozmiaru zderzaka box Dostosowywanie rozmiaru przycisku 3

Kliknij pozycję "Napraw ograniczenia" 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

Ponadto profil danych wejściowych mowy należy zarejestrować słowo kluczowe polecenia głosowego w profilu globalnych poleceń mowy.

Mowa przycisku 2

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.

Mowa przycisku 3

Jak utworzyć przycisk od podstaw

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

Sześcian z możliwością naciśnięcia 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 Aparatu 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 Ruchomy przycisk.

sześcian z możliwością naciśnięcia przycisku 3

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.

Dociśnięty kostka Buton 1Sześcian z możliwością naciśnięcia przycisku 2

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

Uruchamianie modułu z możliwością naciśnięcia 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 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:

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

Sześcian z możliwością naciśnięcia przycisku 4

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

sześcian z możliwością naciśnięcia przycisku 5uruchamiany 2 moduł z możliwością naciśnięcia przycisku

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.

sześcian z możliwością naciśnięcia przycisku 7Sześcian z możliwością naciśnięcia przycisku 6

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.

Wybieranie motywu profilu

Zobaczysz, że obiekt odpowiada na obie strony (promienie ręczne lub kursor wzroku) i interakcje zbliżeniowe (ręka).

Uruchamianie modułu z możliwością naciśnięcia przycisku 3Uruchamianie modułu z możliwością naciśnięcia przycisku 4

Przykłady przycisków niestandardowych

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

Naciśnięty niestandardowy1Niestandardowa możliwość naciśnięcia 2

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:

Naciśnięcie niestandardowe 3

Zobacz też