手记

U3D接入Andriod SDK以及交互

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也可以导入

原文链接:http://www.apkbus.com/blog-820900-61848.html

0人推荐
随时随地看视频
慕课网APP