CodeBlanks Logo Icon CodeBlanks

Input Action asset

Input Action asset oluşturmayı ve eylem tanımlamayı öğrenirsin.

Input Action asset nedir?

Input Action asset, eylemlerin ve bağlamaların tek dosyada tutulduğu varlıktır; uzantısı .inputactions olur. Project penceresinde Create > Input Actions ile oluşturulur ve çift tıklayınca Input Actions düzenleyicisi açılır.

{
    "name": "Jump",
    "type": "Button",
    "bindings": [
        { "path": "<Keyboard>/space" }
    ]
}

Dosyanın içeriği JSON biçimindedir; bu sayede sürüm kontrolüyle rahatça izlenir.

Action Map, Action ve Binding

Action Map aynı oyun durumundaki eylemleri toplar; örneğin Player haritası hareket ve zıplamayı tutar. Action tek bir giriş işlevidir ve türü Button, Value ya da Pass Through olur. Binding eylemi fiziksel kontrole bağlar; 2DVector gibi composite'ler WASD tuşlarını tek bir Vector2 değerinde birleştirir.

moveAction.AddBinding("<Gamepad>/leftStick");
moveAction.AddCompositeBinding("2DVector")
    .With("Up", "<Keyboard>/w");

Uygulama Jump eylemini tanımla

EylemTanimla adında bir MonoBehaviour yaz. Start içinde adı Jump, türü InputActionType.Button olan bir InputAction oluştur. yollar adlı bir string dizisi tanımla ve içine <Keyboard>/space ile <Gamepad>/buttonSouth değerlerini koy. Diziyi foreach ile dolaş; her yol için jump.AddBinding(yol) çağır ve Debug.Log("Baglama: " + yol) ile yazdır. En sonda jump.Enable() çağır.

Başlangıç kodu

Player.cs
using UnityEngine;
using UnityEngine.InputSystem;

public class EylemTanimla : MonoBehaviour
{
    void Start()
    {
        // Adi Jump, tipi Button olan bir InputAction olustur

        // yollar dizisini iki baglama yoluyla doldur

        // foreach ile her yol icin AddBinding cagir ve yazdir

        // eylemi etkinlestir
    }
}

Örnek çözüm

Player.cs
using UnityEngine;
using UnityEngine.InputSystem;

public class EylemTanimla : MonoBehaviour
{
    void Start()
    {
        InputAction jump = new InputAction(name: "Jump", type: InputActionType.Button);
        string[] yollar = { "<Keyboard>/space", "<Gamepad>/buttonSouth" };

        foreach (string yol in yollar)
        {
            jump.AddBinding(yol);
            Debug.Log("Baglama: " + yol);
        }

        jump.Enable();
    }
}

Beklenen çıktı

Baglama: <Keyboard>/space
Baglama: <Gamepad>/buttonSouth

Soru ve cevaplar

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

1 Boşluk tuşunu Jump eylemine bağlamak için bağlama yolu ne olmalıdır?

  • <Mouse>/leftButton
  • <Keyboard>/space Doğru cevap
  • <Keyboard>/escape
  • <Gamepad>/buttonSouth

Açıklama: Bağlama yolu cihaz adı ile kontrol adını birleştirir; boşluk tuşu Keyboard cihazının space kontrolüdür, bu yüzden yol <Keyboard>/space olur.

2 Sol analog çubuğu bağla

Soru
moveAction.AddBinding("____");
Cevap
moveAction.AddBinding("<Gamepad>/leftStick");

Açıklama: Hareket için sol analog çubuğun yolu <Gamepad>/leftStick olur; sağ çubuk kamerada, buttonSouth ise A/Cross düğmesinde kullanılır.

3 Action asset parçaları

Kavram Anlamı
Action Map Eylemlerin gruplandigi bolum
Action Tek bir giris islevi
Binding Eylemin fiziksel kontrole baglantisi
Composite WASD tuslarinin tek eylemde birlesmesi

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