Unity Tab ile Input Değiştirme ve Enter ile Fonksiyon Tetikleme

Tab ve Enter Tuşlarıyla UI Gezintisi Yapan Bir Unity Scripti Oluşturma

Unity Tab ile Input Değiştirme ve Enter ile Fonksiyon Tetikleme

 Unity oyun geliştirme platformu, kullanıcı arayüzlerinin (UI) etkileşimlerini yönetmek için çeşitli araçlar sunar. Bu araçlar arasında kullanıcıların UI öğeleri arasında gezinmesini ve etkileşimde bulunmasını sağlayan kod tabanlı yaklaşımlar da bulunur. Bu blog yazısında, Unity'de Tab ve Enter tuşları kullanılarak UI gezintisi sağlayan bir C# scripti oluşturmayı ele alacağız.

Tab ve Enter Tuşlarıyla UI Gezintisi Yapan Script Kodumuz

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Events;

public class UIController : MonoBehaviour
{
    [SerializeField] private Selectable[] selectables;
    [SerializeField] private UnityEvent onEnterHandle;
    private int _selectedInput;

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Tab) && Input.GetKeyDown(KeyCode.LeftShift))
        {
            _selectedInput--;
            if (_selectedInput < 0)
                _selectedInput = selectables.Length - 1;
            selectables[_selectedInput].Select();
        }
        else if (Input.GetKeyDown(KeyCode.Tab))
        {
            _selectedInput++;
            if (_selectedInput > selectables.Length - 1)
                _selectedInput = 0;
            selectables[_selectedInput].Select();
        }

        if (Input.GetKeyDown(KeyCode.Return))
            onEnterHandle?.Invoke();
    }

    /// 
    /// Change selectable
    /// 
    /// Target selectable
    public void SetSelectedInput(int selectableIndex) => _selectedInput = selectableIndex;
}

Bu script, bir dizi Selectable öğesini (UI öğeleri için genel bir sınıf) kontrol eder. Update() fonksiyonu, klavye girişlerini dinler ve Tab tuşuna basıldığında bir sonraki veya önceki Selectable öğesini seçer. Enter tuşuna basıldığında ise belirtilen UnityEvent'i tetikler. 

Bu scripti kullanmak için, Unity sahnenize bir boş GameObject ekleyin ve üzerine UIController bileşenini ekleyin. Ardından, UIController bileşeninin Inspector panelinde, selectables dizisine UI öğelerini sürükleyip bırakın ve Enter tuşuna basıldığında tetiklenmesini istediğiniz olayı belirtin. 

Bu script, Unity'de kullanıcı arayüzlerinin klavyeyle gezinilmesini ve etkileşimde bulunulmasını sağlar. Bu, oyun menüleri, seçenekler menüleri veya herhangi bir kullanıcı arayüzü içeren bir Unity projesinde oldukça yararlı olabilir.