CodeBlanks Logo Icon CodeBlanks

PlayerInput bileşeni

PlayerInput bileşeniyle eylemleri dinlemeyi öğrenirsin.

PlayerInput bileşeni

PlayerInput bileşeni bir Input Action asset'ini GameObject'e bağlar: Actions alanına .inputactions dosyasını sürükler, Default Map ile başlangıçta aktif Action Map'i seçersin. Behaviour alanı eylem tetiklenince ne olacağını belirler; Send Messages seçilirse eylem adının başına On eklenir ve o adlı metod çağrılır.

PlayerInput pi = GetComponent<PlayerInput>();
Debug.Log("Harita: " + pi.defaultActionMap);

Böylece Jump eylemi için OnJump metodunu yazman yeterli olur.

InputValue ile değer okuma

Geri çağırma metodu bir InputValue alır; bu nesne eylemin o anki değerini taşır. Değeri value.Get<T>() ile okursun: OnMove içinde Vector2, tetik benzeri eylemlerde float alabilirsin.

public void OnMove(InputValue value)
{
    Vector2 h = value.Get<Vector2>();
    Debug.Log("Hareket: " + h);
}

Eylem her tetiklendiğinde PlayerInput ilgili metodu çağırır.

Uygulama Geri çağırma metotlarını yaz

OyuncuGirdisi adında bir MonoBehaviour yaz. hareket adında bir Vector2 alan ekle. OnMove(InputValue value) metodunda value.Get<Vector2>() sonucunu hareket alanına ata. OnJump(InputValue value) metodunda Debug.Log("Zipla!") çağır. Start içinde Debug.Log("Girdi dinleniyor") çağır.

Başlangıç kodu

Player.cs
using UnityEngine;
using UnityEngine.InputSystem;

public class OyuncuGirdisi : MonoBehaviour
{
    Vector2 hareket;

    void Start()
    {
        Debug.Log("Girdi dinleniyor");
    }

    // OnMove metodu InputValue alir, Vector2 degerini hareket alanina atar

    // OnJump metodu InputValue alir ve ziplama mesaji basar
}

Örnek çözüm

Player.cs
using UnityEngine;
using UnityEngine.InputSystem;

public class OyuncuGirdisi : MonoBehaviour
{
    Vector2 hareket;

    void Start()
    {
        Debug.Log("Girdi dinleniyor");
    }

    public void OnMove(InputValue value)
    {
        hareket = value.Get<Vector2>();
    }

    public void OnJump(InputValue value)
    {
        Debug.Log("Zipla!");
    }
}

Beklenen çıktı

Girdi dinleniyor

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Send Messages modunda Jump eylemi tetiklenince hangi metod çağrılır?

  • OnPress(InputValue value)
  • HandleJump(InputValue value)
  • JumpInput(InputValue value)
  • OnJump(InputValue value) Doğru cevap

Açıklama: Send Messages eylem adının başına On ekler ve o adlı metodu arar; Jump eylemi OnJump metodunu çağırır ve metod bir InputValue parametresi alır.

2 Move değerini Vector2 olarak oku

Soru
Vector2 h = value.Get____();
Cevap
Vector2 h = value.Get<Vector2>();

Açıklama: Move eylemi iki boyutlu bir değer verdiği için Get çağrısı Vector2 tipini alır.

3 PlayerInput alanları

Kavram Anlamı
Actions Kullanilacak .inputactions dosyasi
Default Map Baslangicta aktif olan Action Map
Send Messages On... adli metotlari cagiran davranis
Invoke Unity Events Inspector uzerinden fonksiyon baglama

İleri seviye bölümündeki tüm dersler