PlayerInput bileşeni
- Oyun Geliştirme kursu
- İleri seviye
- Ders 57/71
- 4 dk
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
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
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
Vector2 h = value.Get____();
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 |