Oefening: Deelvenster met knoppen en dynamische menu's

Voltooid

Er zijn verschillende manieren om invoer te bieden. Invoer activeert bepaalde gebeurtenissen en voert enkele wijzigingen uit. Ui-onderdelen helpen gebruikers bij het werken met de hologrammen op de scène.

Een statisch deelvenster met knoppen maken

  1. Klik in het venster Hierarchy met de rechtermuisknop op het RoverExplorer-object en selecteer Leeg maken om een leeg object toe te voegen als onderliggend element van de RoverExplorer. Geef de objectknoppen een naam en configureer het onderdeel Transformatie als volgt:

    • Positie: X = -0,6, Y = 0,036, Z = -0,5
    • Draaiing: X = 90, Y = 0, Z = 0
    • Schaal: X = 1, Y = 1, Z = 1

    Screenshot of Unity with newly created Buttons object selected and positioned.

  2. Navigeer in het venster Project naar de MRTK assets>. Tutorials.GettingStarted>Prefabs folder, click-and-drag the PressableCylinderButton prefab to the Buttons object, then rechtermuisknop-click the PressableCylinderButton and select Duplicate to create a copy, repeat until you ve a total of three PressableCylinderButton objects under Buttons:

    Screenshot of Unity with newly added PressableRoundButton prefabs.

    In een venster wordt u gevraagd TextMesh Pro te importeren. Selecteer de eerste optie om TMP Essentials te importeren.

  3. Selecteer in het deelvenster Hiërarchie het object Knoppen en selecteer vervolgens in het deelvenster Inspector de optie Component toevoegen om het onderdeel Objectbalk toe te voegen. Configureer deze als volgt:

    • Richting van objectbalkstroom: horizontaal
    • Afstand tussen: X = 0,2, Y = 0

    Wijs elk object onder Knoppen toe aan de lijst objectbalkobjecten in het onderdeel Objectbalk:

    Screenshot of Unity Buttons object with GridObjectCollection component added, configured, and applied.

  4. Geef in het deelvenster Hiërarchie de knoppen Hints, Explode en Reset. Wijzig voor elke knop de eigenschap SpeechRecognitionKeyword onder Advanced StatefulInteractable Instellingen in het onderdeel Drukbare knop zodat deze overeenkomt met de knopnamen::

    Screenshot showing button text labels configured.

  5. Selecteer in het deelvenster Hiërarchie het knopobject Hints en configureer vervolgens in het venster Inspector de gebeurtenis PressableButton.OnClicked () als volgt:

    • Wijs het RoverAssembly-object toe aan het veld Geen (Object)
    • Selecteer In de vervolgkeuzelijst Geen functie de optie PlacementHintsController>TogglePlacementHints () om deze functie in te stellen als de actie die moet worden uitgevoerd wanneer de gebeurtenis wordt geactiveerd

    Screenshot of Hints button object OnClick event configured.

  6. Selecteer in het deelvenster Hiërarchie het knopobject Exploderen en configureer vervolgens in het venster Inspector de gebeurtenis PressableButton.OnClicked () als volgt:

    • Wijs het RoverAssembly-object toe aan het veld Geen (Object)
    • Selecteer in de vervolgkeuzelijst Geen functie explodedViewController>ToggleExplodedView() om deze functie in te stellen als de actie die moet worden uitgevoerd wanneer de gebeurtenis wordt geactiveerd

    Screenshot of Unity with Explode button object OnClick event configured.

  7. Druk op de knop Afspelen om de gamemodus in te schakelen. Houd de spatiebalk ingedrukt om de hand te activeren en gebruik de muis om op de knop Hints te drukken om de zichtbaarheid van de plaatsingstipobjecten in te schakelen:

    Screenshot of Unity Play mode split view with Hints button being pressed.

  8. Met de knop Explode schakelt u de uitgelichte weergave in en uit:

    Screenshot of Unity Play mode split view with Explode button being pressed.

    Verderop in de module implementeren we de knop Opnieuw instellen .

Een dynamisch menu maken dat de gebruiker volgt

  1. Navigeer in het deelvenster Project naar de map Packages>MRTK UX Components>Near Menu, klik en sleep de prefab NearMenuBase naar het hiërarchievenster, stel de positie van de transformatie in op X = 0, Y = -0,4, Z = 0 en configureer het als volgt:

    • Controleer of het tracked targettype van het onderdeel SolverHandler is ingesteld op Head
    • Schakel het selectievakje naast het RadialView Oplosser-onderdeel in, zodat het standaard is ingeschakeld

    Screenshot of Unity with newly added near menu prefab selected.

  2. Wijzig in het venster Hierarchy de naam van het object in Menu en vouw vervolgens het onderliggende object MenuContent-HorizontalLayout (Menu en Pin) > Buttons-GridLayout (Knoppen) uit om de drie knoppen weer te geven:

    Screenshot of Unity with Menu object selected and ButtonCollection object expanded.

  3. Wijzig de naam van de eerste knop in de Knoppen-GridLayout (knoppen) in Indicator en configureer vervolgens in het venster Hiërarchie het gameobject Indicator als volgt:

    • Selecteer het labellabel voor het Frontplate > AnimatedContent > Icon > Label en wijzig het TextMesh Pro-onderdeel zodat deze overeenkomt met de naam van de knop. Zorg ervoor dat het labelobject is geactiveerd in de hiërarchie
    • Configureer de gebeurtenis PressableButton.OnClicked() door het indicatorobject dat lijkt op een punthaak toe te wijzen aan het veld None (Object) en GameObject > SetActive (bool) te selecteren in de vervolgkeuzelijst Geen functie (controleer of het argument is ingeschakeld)
    • Selecteer het object Frontplate > AnimatedContent > Icon > UIButtonFontIcon en wijzig het pictogram in het zoekpictogram in het onderdeel Font Icon Selector . U vindt dit in de lijst met pictogrammen of stel de naam van het huidige pictogram in op 'Pictogram 130'

    Screenshot of Unity with Indicator button object Button Config Helper configured.

  4. Als u het punthaakindicatorobject wilt uitschakelen, selecteert u in het deelvenster Hiërarchie het indicatorobject dat eruitziet als een dubbele punthaak en selecteert u vervolgens in het deelvenster Inspector:

    • Schakel het selectievakje naast de naam uit om het standaard inactief te maken
    • Gebruik de knop Component toevoegen om het onderdeel Directional Indicator Controller (Script) toe te voegen

    Screenshot of Unity with Indicator object selected, disabled, and DirectionalIndicatorController component added.

  5. Wijzig de naam van de tweede knop in TapToPlace en configureer vervolgens in het venster Hierarchy het gameobject TapToPlace als volgt:

    • Selecteer het labellabel voor het Frontplate > AnimatedContent > Icon > Label en wijzig het TextMesh Pro-onderdeel zodat deze overeenkomt met de naam van de knop. Zorg ervoor dat het labelobject is geactiveerd in de hiërarchie
    • Configureer de gebeurtenis PressableButton.OnClicked() door het RoverExplorer> RoverAssembly-object toe te wijzen aan het veld None (Object) en TapToPlace>bool Ingeschakeld te selecteren in de vervolgkeuzelijst Geen functie (controleer of het argument is ingeschakeld)
    • Selecteer het object Frontplate > AnimatedContent > Icon > UIButtonFontIcon en wijzig het pictogram in het handpictogram in het onderdeel Font Icon Selector . U vindt dit in de lijst met pictogrammen of stel de naam van het huidige pictogram in op 'Pictogram 13'

    Screenshot of Unity with TapToPlace button object Button Config Helper configured.

  6. Selecteer in het venster Hierarchy het RoverAssembly-object en configureer vervolgens in het venster Inspector het onderdeel Tap To Place (Script) als volgt:

    • Schakel het selectievakje naast de naam uit om het standaard inactief te maken
    • Selecteer in de sectie On Placing Stopped () het pictogram + om een nieuwe gebeurtenis toe te voegen:
    • Wijs het RoverExplorer>RoverAssembly-object toe aan het veld None (Object)
    • Selecteer in de vervolgkeuzelijst Geen functie TapToPlace>ingeschakeld om deze eigenschapswaarde bij te werken wanneer de gebeurtenis wordt geactiveerd
    • Controleer of het selectievakje voor argumenten is uitgeschakeld

    Screenshot of Unity with TapToPlace component reconfigured.