1.Android 调用 Unity (单纯调) 从 Android 端并不能直接调用 Unity 脚本,而是通过消息发送或者接口回调的方式。(我暂时还没找到直接可以调用untiy脚本方法) 上面这张图要认真读一下 来自于简书–》无猫皆笼(讲解的Unity 与 Android 互调用)
消息发送是一个非常简单的调用机制,建立在一个发消息的接口之上:
// objectName: Unity 对象的名称 // methodName: Unity 对象绑定的脚本方法名 // message: 自定义消息(可以在后面一直添加) UnityPlayer.UnitySendMessage(String objectName, String methodName, String message);这是最原始的调用 ,这样是有些操作比较简单,也不太灵活
2.接口调用方式 AndroidJavaProxy 其实也是 让我们回调数据给untiy更方便
首先,在Java代码中定义接口,示例代码如下:
1. package com.kailufang.manmodule.call; public interface OneInterface { void OnName(); }C#中脚本代码
2. class SDKCallbackListener : AndroidJavaProxy { // 这句话很重要!!!C#找到Jar中接口的引用 public SDKCallbackListener() : base("com.kailufang.manmodule.call.OneInterface ") { } public void OnName(string msg) { DeLog.Log( "OnName:== " + msg); } }这需要在创建的c#脚本自己实现一些初始化中
3. mCallbackListener = new SDKCallbackListener(); // 调用Jar中的方法,并把new的值传进去 设置回调 mSDKJavaObject.Call("initSDK", mCallbackListener);Java 代码,开始使用解开了
4. private SDKCallbackListener mCallbackListener; public void initSDK(SDKCallbackListener listener) { mCallbackListener = listener; mCallbackListener.OnName("Weibo initSDK ok");//这样那边untiy会有一个消息收到 (2)步骤中那个回调就会收到消息 }