前段时间一直在做Unity 与 Android 的交互工作,查了大量了资料,Unity 调用加java 是通过AndroidJavaObject来实现,而java 调用 Unity则通过UnityPlayer.UnitySendMessage这种方式
Unity调用java就不说了,只是个函数接口,但是java 掉用 Unity 如果有循环掉用的话UnitySendMessage的效率就相当的堪忧
还有种方法是Java 中使用接口类,在Unity中可以继承,这种方法的效率要高出很多,不多说直接上代码 .
Java代码如下
package com.untiy.test;
public interface TestListener
{
public void OnTest();
}
public class Test
{
private TestListener mListener;
public void Init(TestListener listener)
{
mListener = listener;
OnTest()
}
public void OnTest()
{
mListener.OnTest();
}
}
Unity代码如下
public class Test : MonoBehaviour
{
private class TestListener : AndroidJavaProxy
{
public TestListener () : base(" com.untiy.test.TestListener")
{
public void OnTest()
{
Debug.Log("OnTest");
}
}
}
private AndroidJavaObject javaObj = null;
private AndroidJavaObject GetJavaObject()
{
if (javaObj == null)
{
javaObj = new AndroidJavaObject("com.untiy.test.Test");
}
return javaObj;
}
private TestListener _TestListener;
void Start()
{
if (_TestListener== null)
_TestListener= new TestListener ();
GetJavaObject().Call("Init", _TestListener);
}
}