SDK接入
1.新建一个安卓工程,Package Name要与Unity工程中的Bundle Identifier一致
2.把安装Unity的D:\Program Files\Editor\Data\PlaybackEngines\androidplayer\release\bin目录下的class.jar添加到安卓工程的libs目录下
3.将需要接入的SDK,jar包、so库放入libs;将res文件夹下的资源文件放入Res目录下;在上方工具栏点击同步按钮Sync Project with Gradle Files (注意:使用资源文件不能用R.xx,需要通过反射获取,一般sdk文档会告知或取资源的方式)
4.在AndroidManifest文件中配置权限、注册Activity、service、reciver
5.MainActivity继承UnityPlayerActivity;调用sdk接口,根据SDK文档来写
6.在Terminal窗口下,执行gradlew clean清理工程,每次生成jar包前都必须先执行清理命令gradlew clean。最后,执行gradlew jarDebugClasses 或者 gradlew jarReleaseClasses生成所需jar包;
7.将生成的jar包copy到Unity工程的Assets\Plugins\Android\bin目录下;
将sdk的libs目录下的jar包(除class.jar)、so库copy到Unity工程的 Assets\Plugins\Android\libs目录下;
将sdk的res文件copy到Unity工程的Assets\Plugins\Android\res目录下;
将sdk的AndroidManifest文件copy到Unity工程的Assets\Plugins\Android目录下
8.以上步骤完成了接入,接下来在脚本里调用sdk的方法就行了
注:两种接入方式对比
类别(形式) google project U3d Plugins
优点 容易理解、方便接入原生SDK、几乎所有SDK都可以接入 接入方便、容易在Unity中进行扩展与管理
缺点 接入比较繁琐,对U3d项目不友好 不是所有SDK都提供U3d Plugins形式
apk导出 Android Studio导出 Unity 导出
交互
1.Unity调Android
AndroidJavaClass jc = new AndroidJavaClass ("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject> ("currentActivity");
jo.Call ("makePauseUnity");//makePauseUnity是Android里的一个方法
2.Android调Unity
UnityPlayer.UnitySendMessage("Manager", "ZoomIn", "");
第一个参数是Game Object对象,所以需要在游戏对象上绑定脚本,第二个参数 是unity中定义的方法名,第三个参数是定义方法的参数(可空)。
注:u3d和Android里的方法名应一样,调用方法都应有一个触发事件;u3d是主工程,所以一般使用第一种方式
关于SDK:不是所有sdk都能接入,取决于sdk里资源的调用方式;无法将资源文件打入jar包,As里可以打成aar包更方便,u3d也可以导入