Oyun Geliştirme
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.
Örnek çözümü göster
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();
}
}
Kendini test et
-
Boşluk tuşunu Jump eylemine bağlamak için bağlama yolu ne olmalıdır?
- <Mouse>/leftButton
- <Keyboard>/space
- <Keyboard>/escape
- <Gamepad>/buttonSouth
Cevabı göster
<Keyboard>/space — 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.
-
Sol analog çubuğu bağla
moveAction.AddBinding("____");
Cevabı göster
moveAction.AddBinding("<Gamepad>/leftStick");
-
Action asset parçaları
- Action Map
- Eylemlerin gruplandigi bolum
- Action
- Tek bir giris islevi
- Binding
- Eylemin fiziksel kontrole baglantisi
- Composite
- WASD tuslarinin tek eylemde birlesmesi
Sıradaki ders: PlayerInput bileşeni