Unity içinde Java sınıflarının kullanılması


Aşağıdaki gibi bir Eclipse projesi oluşturalım ve "src" klasörü altındaki sınıfı "JAR" olarak export edelim.

package com.OnayBilisim.UnityJavaPlugin;

import android.util.Log;

public class MyFirstPlugin {

private static MyFirstPlugin m_instance;

public static MyFirstPlugin instance() {
if (m_instance == null)
{
m_instance = new MyFirstPlugin();
}
return m_instance;
}

private MyFirstPlugin() {

}

public void btnTestClicked() {
Log.d("btnTest", "Clicked");
}
}

Burada vermiş olduğumuz paket adını Unity tarafında "Bundle Identifier" kısmında kullanmamız gerekli. Ayrıca "JAR" dosyamızın adı sınıf adı ile aynı olmalı. Unity tarafındaki "Android API Level" ile Eclipse tarafındaki aynı olmalı. Eclipse kodu "instance()" metodu ile java sınıfının kendisini döndürüyor. Test metodu olarakta basit bir buton tıklanma fonksiyonu tanıtılmış durumda.

Unity projemizde "Assests\Plugins\Android\" altına JAR dosyamızı ekleyelim. Bu klasörler henüz oluşmadıysa oluşturalım. Aşağıdaki gibi "CallJava" sınıfı oluşturalım ve bunu "Main Camera" nesnesine bağlayalım.

using UnityEngine;
using System.Collections;

public class CallJava : MonoBehaviour {
private static AndroidJavaObject joMain;
static CallJava() {
if (Application.platform != RuntimePlatform.Android)
return;
}
// Use this for initialization
void Start () {
}
void OnGUI() {
if (GUI.Button(new Rect(Screen.width/2, 100, 100, 100),"Call Java")) {
using (var pluginClass = new AndroidJavaClass("com.OnayBilisim.UnityJavaPlugin.MyFirstPlugin"))
joMain = pluginClass.CallStatic<AndroidJavaObject>("instance");
joMain.Call (" btnTestClicked ");
}
}
// Update is called once per frame
void Update () {
}
}

Burada öncelikle bu sınıfın sadece Android tabanlı cihazlarda çalışması sağlanıyor. "OnGUI()" prosedürü içinde buton yaratılarak Java tarafında oluşturduğumuz sınıfın kullanılması örneklenmiş durumda. Java nesnemizi bir "Android Java Object" içine atıp "Call" metodu ile test prosedürümüzü çağırıyoruz.

Bu hali ile Unity içinde hata alabiliriz ancak Android cihaz üstünde çalışması gerekli. Sizin karşılaştığınız hatalar olursa yorum kısmında belirtmeniz halinde birlikte inceleyebiliriz.

Not: Eğer Java tarafındaki metodumuz parametre alsaydı Unity tarafında aşağıdaki gibi çağırmamız gerekirdi.
joMain.Call (" btnTestClicked  ", new object[]{"Test Parametresi"});

Yorumlar

Bu blogdaki popüler yayınlar

DevExpress ve Telerik karşılaştırması

Install Remmina on macOS for easy connection to your servers via SSH, RDP, VNC.

Logo Apps Eğitim Notları