Input Action asset
- Oyun Geliştirme kursu
- İleri seviye
- Ders 56/71
- 4 dk
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
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
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
moveAction.AddBinding("____");
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 |