Unitys neues Eingabesystem InputSystem

1. Der alte Eingabemanager

In Unity wird standardmäßig der alte Eingabemanager (InputSystemOld) verwendet

Fügen Sie hier eine Bildbeschreibung ein

Im Skript kann die Input-Klasse verwendet werden, um die Eingabevorgänge des Benutzers abzurufen und auf die Multitouch- oder Beschleunigungserfassungsdaten des Mobilgeräts zuzugreifen. Die Input-Klasse kann die im Eingabemanager festgelegten Tasten lesen und die Eingaben des Benutzers im überwachen Update-Funktion.

1.Virtuelle Achse

Die relevanten Einstellungen der virtuellen Achse können Sie in den Projekteinstellungen einsehen.

Fügen Sie hier eine Bildbeschreibung ein

Im Eingabemanager können Sie beispielsweise die entsprechenden Tasten sehen

Am Beispiel von Horzizontal werden der AD sowie die linken und rechten Pfeile der Tastatur überwacht.

float value=Input.GetAxis ("Horzizontal");Wert der virtuellen Achse unter Verwendung des Glättungsfilters. Nicht drücken ist 0, positive Richtung ist 1 und negative Richtung ist -1. Durch Drücken erfolgt ein allmählicher Übergang von 0 auf 1 oder -1. Der Änderungsprozess wird durch die Empfindlichkeit bestimmt.

float value=Input.GetAxisRaw ("Horzizontal");//Virtueller Achsenwert ohne Glättungsfilter. (Werte 1, 0, -1)

Verwenden Sie beispielsweise AD, um die Links- und Rechtsbewegung eines Charakters zu steuern.

private CharacterController characterController;//使用CharacterController组件控制物体
private void Start()
{
    
    
    characterController = GetComponent<CharacterController>();//得到自身的CharacterController组件
}
private void Update() 
{
    
    
    float tmp_CurrentSpeed = 1.7f;//速度
    float tmp_Horizontal = Input.GetAxis("Horizontal");//按下AD返回一个1~-1随时间过渡的float值
    Vector3 movementDirection = characterTransform.TransformDirection(new Vector3(tmp_Horizontal,0,0));//移动的方向,参数为x,z,y
    characterController.Move(tmp_CurrentSpeed * Time.deltaTime * movementDirection);//控制物体移动
}

2. Holen Sie sich Tastatureingaben

Jump überwacht die Leerzeichen auf der Tastatur
Fügen Sie hier eine Bildbeschreibung ein

bool result=Input. GetButton(“Jump”); //Überwachen, ob die entsprechende Schaltfläche eingegeben wird

bool result=Input. GetButtonDown(“Jump”); //Überwachen, ob die entsprechende Taste vollständig gedrückt ist

bool result=Input. GetButtonUp(“Jump”); Überwachen Sie, ob die entsprechende Schaltfläche losgelassen wird

Zum Beispiel das Springen eines Charakters steuern

private CharacterController characterController;//使用CharacterController组件控制物体
private void Start()
{
    
    
    characterController = GetComponent<CharacterController>();//得到自身的CharacterController组件
}
private void Update() 
{
    
    
    float tmp_CurrentSpeed = 1.7f;//速度
    float tmp_JumpHeight = 3.0f;//跳跃高度
    float tmp_Horizontal = Input.GetAxis("Horizontal");//按下AD返回一个1~-1随时间过渡的float值
    Vector3 movementDirection = characterTransform.TransformDirection(new Vector3(tmp_Horizontal,0,0));//移动的方向,参数为x,z,y
    if(Input.GetButtonDown("Jump"))//当按下空格后
    {
    
    
        movementDirection.y = tmp_JumpHeight;
    }
    characterController.Move(tmp_CurrentSpeed * Time.deltaTime * movementDirection);//控制物体移动
}

3. Holen Sie sich Mauseingaben

bool result=Input.GetMouseButton(0);//Wenn die Maus die linke Taste gedrückt hält

bool result=Input.GetMouseButtonDown(1);//Wenn die rechte Maustaste gedrückt wird

bool result=Input.GetMouseButtonUp(2);//Wenn die Maus die mittlere Taste anhebt

2. Neues Eingabesystempaket

1. Vor dem Gebrauch

HINWEIS : Das neue Eingabesystem erfordert Unity 2019.4+ und .NET 4 Runtime. Es funktioniert nicht bei Projekten, die die alte .NET 3.5-Laufzeit verwenden.

Um ein neues Eingabesystem zu installieren, öffnen Sie den Paketmanager von Unity (Menü: Fenster > Paketmanager ). Wählen Sie das Eingabesystempaket aus der Liste aus und klicken Sie auf „Installieren“ .

Standardmäßig UnityEngine.Inputist der klassische Eingabemanager von Unity ( ) aktiv und die Unterstützung für neue Eingabesysteme ist inaktiv.

Dadurch können bestehende Unity-Projekte unverändert weiterarbeiten. Bei der Installation des Eingabesystempakets werden Sie von Unity gefragt, ob Sie das neue Backend aktivieren möchten. Wenn Sie auf „Ja“ klicken , aktiviert Unity das neue Backend und deaktiviert das alte Backend, und der Editor wird neu gestartet.

2. Bei der Verwendung

Fügen Sie den PlayerInput-Steuerelement zum Steuerobjekt hinzu

Fügen Sie hier eine Bildbeschreibung ein

Erstellen Sie eine Eingabeaktion, klicken Sie mit der rechten Maustaste auf -> Erstellen -> Eingabeaktion, verknüpfen Sie sie mit der Aktion der PlayerInput-Komponente und legen Sie die Schaltflächen entsprechend den Anforderungen des Projekts fest
Fügen Sie hier eine Bildbeschreibung ein

Aktionsantworten festlegen Sobald eine Komponente über Aktionen verfügt, müssen Sie für jede Aktion eine Antwort festlegen. Mit PlayerInput können Sie die Reaktion auf verschiedene Arten festlegen, indem Sie die Behavior-Eigenschaft im Inspektorfenster verwenden.
Fügen Sie hier eine Bildbeschreibung ein

Der Screenshot oben verwendet Invoke Unity Events, das UnityEvents auf die gleiche Weise wie die Unity-Benutzeroberfläche verwendet. Unity zeigt ein Ereignis für jede mit einer Komponente verknüpfte Aktion an. Dadurch können Sie die Zielmethode für jedes Ereignis direkt verknüpfen. Das Bild oben zeigt die Verhaltensweisen Jump, LongJump und TouchPosition in Action, die jeweils mit den öffentlich geänderten Methoden Jump, LongJump und Gettouchposition im PlayerController-Skript verbunden sind.

Beachten Sie, dass Sie im Methodenskript den Namespace mit UnityEngine.InputSystem verwenden und das PlayerInput-Steuerelement abrufen müssen.


Während des Lernprozesses habe ich auf die folgenden Inhalte verwiesen. Ich danke denjenigen, die ihr Wissen geteilt haben, herzlich!

2022 Unity Technology | Offizielles Unity-Handbuch

Supongo que te gusta

Origin blog.csdn.net/qq_18931093/article/details/130715761
Recomendado
Clasificación