CodeBlanks Logo Icon CodeBlanks

C# generated class

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

Player.cs
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

Player.cs
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

Soru
inputActions.Player.Jump.performed ____;
Cevap
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

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