C# generated class
- Oyun Geliştirme kursu
- İleri seviye
- Ders 58/71
- 4 dk
Otomatik üretilen C# sınıfı ile eylem okumayı öğrenirsin.
Generate C# Class seçeneği
Input Action asset'in Inspector'ında Generate C# Class kutusunu işaretlersen Unity, asset ile aynı adlı bir C# sınıfı üretir. Üretilen sınıf eylemleri özellik olarak sunar; örneğin inputActions.Player.Jump bir InputAction nesnesidir.
PlayerInputActions inputActions = new PlayerInputActions();
inputActions.Player.Enable();
Debug.Log("Eylemler aktif");Bu nesnenin performed olayına += ile metot bağlayarak derleme zamanında kontrol edilen bir sarmalayıcı kullanırsın.
started, performed ve canceled
Bir eylemin üç olayı vardır: started giriş başlarken, performed eylem gerçekten gerçekleşirken, canceled giriş bırakıldığında çalışır. Aboneliği OnEnable içinde kurar, OnDisable içinde geri alırsın; böylece nesne devre dışı kaldığında bağlantılar temizlenir.
void OnEnable()
{
inputActions.Player.Jump.performed += OnJump;
}
void OnDisable()
{
inputActions.Player.Jump.performed -= OnJump;
}Olay metodu bir InputAction.CallbackContext alır.
Uygulama Abonelik kurulumu
OyuncuKontrol adında bir MonoBehaviour yaz. inputActions adında bir PlayerInputActions alanı ekle ve Awake içinde new PlayerInputActions() ile oluştur. OnEnable içinde inputActions.Player.Jump.performed olayına OnJump metodunu ekle; OnDisable içinde aynı bağlantıyı geri al. OnJump metodu bir InputAction.CallbackContext ctx alır ve Debug.Log("Zipla!") çağırır. Start içinde inputActions.Player.Enable() çağır ve Debug.Log("Eylemler aktif") yazdır.
Başlangıç kodu
using UnityEngine;
using UnityEngine.InputSystem;
public class OyuncuKontrol : MonoBehaviour
{
PlayerInputActions inputActions;
void Awake()
{
// inputActions alanini PlayerInputActions ornegiyle doldur
}
// OnEnable icinde Jump.performed olayina OnJump metodunu ekle
// OnDisable icinde ayni baglantiyi geri al
// OnJump metodu CallbackContext alir ve ziplama mesaji basar
void Start()
{
// Player eylem haritasini etkinlestir ve basari mesajini yazdir
}
}Örnek çözüm
using UnityEngine;
using UnityEngine.InputSystem;
public class OyuncuKontrol : MonoBehaviour
{
PlayerInputActions inputActions;
void Awake()
{
inputActions = new PlayerInputActions();
}
void OnEnable()
{
inputActions.Player.Jump.performed += OnJump;
}
void OnDisable()
{
inputActions.Player.Jump.performed -= OnJump;
}
void OnJump(InputAction.CallbackContext ctx)
{
Debug.Log("Zipla!");
}
void Start()
{
inputActions.Player.Enable();
Debug.Log("Eylemler aktif");
}
}Beklenen çıktı
Eylemler aktif
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Üretilen sınıfta bir eylemin olayına nasıl abone olunur?
- inputActions.Player.Jump.performed += OnJumpMetodu Doğru cevap
- InputAction.actionFound += OnJumpMetodu
- Jump.OnPress += OnJumpMetodu
- playerInput.OnJump += OnJumpMetodu
Açıklama: Üretilen sınıfta her eylem bir InputAction'dır; performed, started ve canceled olaylarına += ile metot bağlanır.
2 Aboneliği geri al
inputActions.Player.Jump.performed ____;
inputActions.Player.Jump.performed -= OnJump;
Açıklama: OnDisable içinde abonelik -= ile geri alınır; += yeni bir abonelik ekler ve eski bağlantı yerinde kalır.
3 Generated class kavramları
| Kavram | Anlamı |
|---|---|
Generate C# Class |
Asset icin C# sinifi ureten secenek |
Wrapper |
Eylemleri ozellik olarak sunan sinif |
performed |
Eylemin gerceklestigi an |
CallbackContext |
Olay metodunun aldigi bilgi |