Unity'de oyun kumandasıyla sanal fareyi kontrol etme

Katlanabilir cihazlar, tabletler ve büyük ekranlar gibi çok çeşitli form faktörleri için Android oyunları geliştirirken oyuncular genellikle harici kontrol cihazları veya gamepad'ler bağlar. Başlangıçta dokunma veya fare etkileşimleri için tasarlanmış kullanıcı arayüzü ekranlarında menülerde gezinmek kumandayla zor olabilir.

Kullanıcı arayüzü mimarinizi standart D-pad gezinme etrafında yeniden tasarlamak genellikle daha iyi bir kullanıcı deneyimi sunsa da mevcut projeler için her zaman mümkün olmayabilir. Alternatif olarak, Unity Input System VirtualMouseInput bileşenini sağlar. Bu bileşen, bağlı bir oyun kumandası veya kumanda kullanarak ekranda sanal bir yazılım imlecini hareket ettirmenize olanak tanır.

VirtualMouseInput hakkında

VirtualMouseInput bileşeni, Unity Input System paketinde yer alan ve oyun kumandası girişlerini ekran üzerindeki imleç kontrolüne, kullanıcı arayüzü işaretçi etkileşimlerine ve simüle edilmiş dokunmatik ekran etkinliklerine bağlayan üst düzey bir yardımcı programdır. Etkin olduğunda:

  • Sanal fare cihazı oluşturur: Yazılımla simüle edilmiş bir fareyi, Unity Giriş Sistemi'nde fiziksel işaretleme cihazlarıyla birlikte kaydeder.
  • Oyun kumandası kontrollerini imleç işlemlerine eşleme: İmleci ekranda hareket ettirmek için analog çubukları veya D-pad'leri bağlayabilir ve sol, sağ ya da orta fare tıklamalarını simüle etmek için kumanda düğmelerini (ör. güney düğmesi / A) eşleyebilirsiniz.
  • Unity kullanıcı arayüzüyle entegrasyon: InputSystemUIInputModule ile sorunsuz bir şekilde çalışarak düğmeler, açma/kapatma düğmeleri ve kaydırma çubukları gibi standart kullanıcı arayüzü öğeleri, sanal imlece tıpkı donanım fare veya dokunma etkileşimine yanıt verdiği gibi yanıt verir.
  • Görsel imleci yönlendirir: Sanal imlecin ekrandaki konumunu otomatik olarak izleyip oluşturacak bir kullanıcı arayüzü Graphic (ör. Image bileşeni) atamanıza olanak tanır.

Sanal fareyi TouchSimulation ile birleştirme

Oyununuz başlangıçta yalnızca dokunmatik ekranlar için tasarlanmışsa ve doğrudan dokunma komut dosyalarına veya API'lere dayanıyorsa sanal fare, dokunmatik ekran cihazı yerine fare cihazı olarak kaydedildiğinden mevcut dokunma algılama mantığınızı otomatik olarak tetiklemez.

Eski dokunma işleme kodunuzu yeniden yazmadan oyun kumandasıyla kontrol edilen imleç etkileşimini desteklemek için Unity Input System'in TouchSimulation özelliğini VirtualMouseInput ile birlikte kullanabilirsiniz:

  • Nasıl çalışır? TouchSimulation.Enable() kullanılarak etkinleştirildiğinde Giriş Sistemi, VirtualMouseInput tarafından oluşturulan yazılımla simüle edilmiş fare de dahil olmak üzere etkin fare cihazlarından gelen tıklamaları ve işaretçi hareketlerini otomatik olarak simüle edilmiş dokunmatik ekran etkinliklerine dönüştürür.
  • Sonuçtaki veri akışı: Oyun kumandanızın çubuğu ve düğme etkileşimleri, sanal fareyi hareket ettirir. TouchSimulation Bu hareketler, tek dokunma etkinliklerine (Touchscreen) dönüştürülür. Mevcut dokunma algılama komut dosyalarınız, bu etkinlikleri kod değişikliği yapmadan sorunsuz bir şekilde işleyebilir.
  • Dikkat edilmesi gereken noktalar: TouchSimulation tek dokunuşlu işaretçi emülasyonuyla sınırlıdır. Oyununuzda yakınlaştırmak için parmakları sıkıştırma veya iki parmakla döndürme gibi karmaşık çoklu dokunma hareketleri kullanılıyorsa oyun kumandası kontrolleriniz için özel giriş işlemi bağlamaları yapılandırmanız gerekir.

Teknik ayrıntılar, özellikler ve kullanım belgeleri için resmi UnityEngine.InputSystem.UI.VirtualMouseInput ve UnityEngine.InputSystem.EnhancedTouch.TouchSimulation komut dosyası referanslarına bakın.