C# and java call each other in unity

foreword

When accessing the SDK or customizing some functions in Unity, you need to call the system interface. In the actual operation of Android phones, that is, Unity and android call each other. We use c# for Unity and java for android.
The following describes how they call each other.

c# call java

c# call:

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 calls c

// 引入包, 向Unity发送消息的静态方法写在这里。
import com.unity3d.player.UnityPlayer;

// 参数1:发送游戏对象的名称
// 参数2:对象绑定的脚本接收该消息的方法,
// 参数3:本条消息发送的字符串信息
UnityPlayer.UnitySendMessage(gameObjectName, callbackMethod, param);

If there are any mistakes, please point them out.

email:dxmdxm1992#gmail.com

blog: http://blog.csdn.net/david_dai_1108

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325565857&siteId=291194637