Indataåtgärder – MRTK2

Indataåtgärder är abstraktioner över råa indata som är avsedda att hjälpa till att isolera programlogik från specifika indatakällor som producerar indata. Det kan till exempel vara användbart att definiera en Select-åtgärd och mappa den till den vänstra musknappen, en knapp i en spelplatta och en utlösare i en 6 DOF-kontrollant. Du kan sedan låta din programlogik lyssna efter Select input action events ( Välj indataåtgärdshändelser) i stället för att behöva vara medveten om alla olika indata som kan generera den.

Skapa en indataåtgärd

Indataåtgärder konfigureras i indataåtgärdsprofilen, i indatasystemprofilen i komponenten Mixed Reality Toolkit, och anger ett namn för åtgärden och vilken typ av indata (axelbegränsning) som den kan mappas till:

Indataåtgärd

Det här är de vanligaste värdena för axelbegränsning:

Axelbegränsning Description
Digital På/av-indata som en binär knapp i en spelplatta eller mus.
Enskild axel Analoga indata med en axel som en analog utlösare i en spelplatta.
Dubbel axel Analoga indata med dubbla axlar som en tumsticka.
Sex dof 3D-pose med översättning och rotation som den som produceras av 6 DOF-styrenheter.

Du hittar den fullständiga listan i AxisType.

Mappa indata till åtgärder

Hur du mappar indata till och åtgärd beror på typen av indatakälla:

Styrenhetsindata

Gå till profilen för mappning av styrenhetsindata under indatasystemprofilen. Där hittar du en lista över alla kontrollanter som stöds:

Mappningsprofil för indata

Välj den som du vill konfigurera och ett dialogfönster visas med alla kontrollantindata, så att du kan ange en åtgärd för var och en av dem:

Tilldelning av indataåtgärd

Talinmatning

I talkommandoprofilen under Indatasystemprofilen hittar du listan över för närvarande definierade talkommandon. Om du vill mappa en av dem till en åtgärd väljer du den bara i listrutan Åtgärd .

Profil för talkommandon

Gestinmatning

Gestprofilen under indatasystemprofilen innehåller alla definierade gester. Du kan mappa var och en av dem till en åtgärd genom att välja den i listrutan Åtgärd .

Gestprofil

Hantera indataåtgärder

Varning

För närvarande kan endast indataåtgärder av digital typ hanteras med hjälp av de metoder som beskrivs i det här avsnittet. För andra åtgärdstyper måste du hantera händelserna för motsvarande indata direkt i stället. Om du till exempel vill hantera en 6 DOF-åtgärd som mappats till kontrollantindata måste du använda IMixedRealityGestureHandler<T> med T = MixedRealityPose.

Det enklaste sättet att hantera indataåtgärder är att använda skriptet InputActionHandler . På så sätt kan du definiera den åtgärd som du vill lyssna på och reagera på händelser som startats och avslutats med Unity Events.

Acton-hanterare

Om du vill ha mer kontroll kan du implementera IMixedRealityInputActionHandler gränssnittet direkt i skriptet. Mer information om händelsehantering via hanteringsgränssnitt finns i avsnittet Indatahändelser .

Exempel

Se MRTK/Examples/Demos/Input/Scenes/InputActions en exempelscen som visar hur du skapar en åtgärd, mappar den till kontrollant, tal och gestindata och använder den för att rotera ett objekt på kommandot.

Exempel på indataåtgärd