环境
1.首先我们需要安装JDK,并配置环境
2.Unity中选好SDK和NDK指定路径
3.Unity工程切换为Android工程
4.打包发布的包名,工程名指定好
基础
1.拿到我们的UnityPlayer类
Unity工程打包到安卓会在libs文件夹下生成unity-classes.jar包
我们需要拿到这个类库下的UnityPlayer类(路径在com.unity
3d.player下)
在这个类里面有个静态变量currentActivity
这个currentActivity就是我们的UnityPlayerActivity,这里我们需要获取到它才能进行通信
Unity Call Android
private AndroidJavaClass javaClass = null; //用于缓存unityplayer
private AndroidJavaObject javaObject =null; //用于缓存unityactivity
public Text messageText; //用于显示ardroid传回的消息
public Button btn; //监听事件并通知android
void Start()
{
//这两句代码前面已经解释的很清楚了
javaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); //获取unityplayer
javaObject= javaClass.GetStatic<AndroidJavaObject>("currentActivity"); //获取unityplayer下的静态变量
btn.onClick.AddListener(Call); //监听
}
void Call()
{
javaObject.Call("Test"); //通知UnityActivity里面的Test方法
}
//Android 通知 Unity
public void CallBack(string str)
{
messageText.text = str;
}
Unity工程写完了,我们保存场景,并打包,注意这里不是打包成apk
勾选Export Project,这样打包出来的是安卓工程,而不是apk包
然后我们使用Android studio打开这个工程进行二次开发
Android Call Unity
这里也很简单
首先我们找到UnityPlayerActivity
在这里面添加之前在Unity端Call的Test方法就可以了
然后使用UnityPlayer里面的静态方法UnitySendMessage方法发送消息给Unity
这里有3三个参数要填
1.游戏物体的名字(Unity里面挂脚本的物体名,而不是脚本名)
2.方法名
3.参数
至此,Unity与Android的简单通信完成
总结
当我们在Unity端修改了代码后,我们只需要把assets文件夹和jniLibs文件夹复制到之前的Android工程即可
后面我会讲解接简单的SDK