Unity Mobil Oyunlarda Kullanıcıdan Input Almak

ücretsiz unity eğitim serisi

Unity’de mobil oyunlarda kullanıcıdan veri almak için Input sınıfının özelliklerinden faydalanırız. Bu yazıda kullanıcının ekranda dokunduğu yerin fiziksel koordinatlarını ve dokunma hakkındaki diğer bilgileri almayı öğreneceğiz. Android ve Ios cihazlar için bu

Unity Input.Touch Sınıfı Parametreleri 

ParametreAçıklama
fingerIdDokunuş için benzersiz numara
positionDokunuşun ekrandaki koordinatı
deltaPositionSon dokunuşla şimdiki dokunuş arasındaki değişim.
deltaTimeSon dokunuştan bu yana geçen zaman.
tapCountDokunuş sayısı. Üst üste basarsanız görebilirsiniz.
phaseDokunuş tipini belirtir.
BeganBir parmak ekrana dokunuyor.
MovedBir parmak ekranda hareket ediyor.
StationaryBir parmak ekrana dokunuyor fakat hareket etmiyor.
EndedBir parmak ekrandan kaldırıldı. Bir dokunuşun son aşaması.

Kullanıcıdan Input Almak (Dokunma Bilgilerini Görüntüleme)

Dokunma bilgilerini ancak bir mobil cihazda görebiliriz. Bu yüzden Unity’de test edemeyeceğiz. Bunun için projemizi build etmemiz gerekiyor. Android telefonunuza çıkardığınız apk’yı yükleyerek aşağıdaki çıktıyı elde edeceksiniz. Cihazdan cihaza maksimum dokunma sayıları değişmektedir.

Unity Mobil Cihazda Dokunmaları Görüntüleme

Yukarıdaki çıktıyı elde etmek için bir script dosyası oluşturun. Ben adını TouchController koydum. Eğer farklı bir isim verecekseniz aşağıdaki class ismini değiştirmeniz gerekecektir.

using System;
using UnityEngine;
using UnityEngine.UI;

public class TouchController : MonoBehaviour
{
    public Text touchesText; // Ekranda dokunmaları göstereceğimiz Canvas > Text objesi

    string touches = ""; // dokunmaların tutulacağı değişken
    void Update() // Sürekli çalışan fonksiyon
    {
        touches = ""; // dokunmaları sıfırlıyoruz.

        foreach (Touch touch in Input.touches)
        {
            //dokunma bilgilerini değişkene atıyoruz.
            touches += "FingerId: " + touch.fingerId + " Dokunma Tipi: " + touch.phase + " Delta Position:" + touch.deltaPosition;
            touches += " Tap Count: " + touch.tapCount + " Position:" + touch.position;
            touches += Environment.NewLine; // diğer dokunma için yeni satıra geçiyoruz 
        }

        if (touches != "") // dokunmalarda bir değişiklik varsa text objesindeki değeri değiştiriyoruz.
            touchesText.text = touches;
    }
}

Yukarıdaki kodları yazdıktan sonra Hiyerarşi penceresinde bir GameObject’e sürükleyip bırakın. Bu konu hakkında daha fazla bilgi için Arayüzün Kapsamlı İncelenmesi adlı yazıyı okuyabilirsiniz. Daha sonra bir Hiyerarşi penceresinde  Create butonuna tıklayıp UI > Text yolunu takip ederek bir canvas ve text oluşturun. Text objesini Scene penceresinde manuel olarak konumlandırabilirsiniz. Benim konumlandırma ve yazı tipi ayarlarım aşağıda inspector penceresinde yer almaktadır.

Unity Canvas Text Inspector

Şimdi yazdığımız scriptimizi yukarıda Hiyerarşi penceresinde bulunan TouchController objesine aşağıdaki gibi sürükleyip bırakın.

unity de objeyi scripte taşıma

Projenin android telefonlarda kullanılmasını sağlamak için build etmemiz gerekiyor. İleride android telefonlar için nasıl apk çıkaracağımızı anlatacağımız bir yazı yayınlanacak. Yazı yayınlandığı zaman buraya link verilecektir.

Projenin yazıldığı Unity Versiyonu: 2019.1.7f1

Target Platform: Android

Proje kaynak dosyasını indirmek için buraya tıklayabilirsiniz.

Unity Ders Listesini görüntüleyin.