前言
在unity中接入sdk或者定制一些功能时,需要调用系统接口。安卓手机实际操作中,也就是Unity与android相互调用。我们在Unity中使用c#,android中使用java。
下面介绍他们如何相互调用。
c# 调用 java
c#调用:
protected AndroidJavaObject _activity;
protected AndroidJavaObject _delegate;
if (_activity == null)
{
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
_activity = jc.GetStatic<AndroidJavaObject>("currentActivity");
}
_activity.Call("runOnUiThread", new AndroidJavaRunnable(() =>
{
if (_delegate == null)
{
// com.company.project.test:自定义实现的类,不继承
_delegate = new AndroidJavaObject("com.company.project.test");
}
}));
// funcName java内实现的方法
// _activity 当前activity
// gameObjectName 绑定脚本的gameobject名字
// callbackMethod 方法名
_activity.Call("runOnUiThread", new AndroidJavaRunnable(() => {
_delegate.Call("funcName", _activity, gameObjectName, callbackMethod);
}));
java 调用 c
// 引入包, 向Unity发送消息的静态方法写在这里。
import com.unity3d.player.UnityPlayer;
// 参数1:发送游戏对象的名称
// 参数2:对象绑定的脚本接收该消息的方法,
// 参数3:本条消息发送的字符串信息
UnityPlayer.UnitySendMessage(gameObjectName, callbackMethod, param);
如有错误,欢迎指出。
email:dxmdxm1992#gmail.com