Unity3D与android的集成
我需要创build一个由Unity3d(animation等)和AndroidSDK(通过androidSDK我写的几个活动,在Java,清单和资源编写的活动)写的部分组成的android应用程序,
事实上,我已经有了这些部分(至less嘲笑准备=))我不知道如何沟通他们之间。
我读了很多关于unity3d android集成的文章(主要是关于所谓的“插件”),并没有理解这个工作人员是如何工作的=(我理解的主要事情(每个人都写了官方文档)是关于插件的文档非常差… =)
我可以理解的唯一沟通方式是从unity3d脚本(使用AndroidJavaClass和AndroidJavaObject)进行意图(广播),以便我的活动(用java编写)可以处理它。 但有些事情告诉我,这不是最好的解决scheme…
我读到的关于这个问题的是我需要使用JNI(这是java本地接口 – 为什么?!? – 为什么我需要使用本机代码?)
我是否需要在java上创build一些中间层代码,目的是与我的java活动进行通信,使用AndroidNDK进行编译,并将其作为插件包含到Unity3d项目中? 我怎么能写中间层比? 我是否需要使用UnityPlayer而不是“Activity”作为基类,为什么?
Here is a tutorial on the basics of running Unity inside of a normal Android app .
在Android视图中有一个关于运行Unity的很好的教程。 一旦启动并运行,您就可以轻松地在应用程序中的任何位置开始embedded场景。
当您需要从Unity调用Java Android应用程序时,可以添加以下代码:
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
然后,您可以通过活动AndroidJavaObject在您的活动中调用所需的任何方法。 像这样的东西:
activity.Call("yourFunctionName", parameters);
为了完全支持Android,你不需要在java上创build一些中间级的代码。
相反,你应该:
- 在Android SDK上创build一个Lib项目。
- 创build1个主要活动扩展UnityPlayerActivity
- 创build其他您需要的活动并将其添加到清单中。
- 创build资源,布局…
- 通过将所有JAR资源文件复制到Assets / Plugins / Android文件夹,导出到JAR并将其添加到Unity。
这种方式有助于写入推送通知,在应用程序帐单等…
参考#这里: http ://docs.unity3d.com/Documentation/Manual/PluginsForAndroid.html( – >扩展UnityPlayerActivity Java代码)
另外,通过使用下面的代码:
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"); activity.Call("yourFunctionName", parameters);
您可以在Unity上使用Android来完成大部分的魔术事情
注意*:yourFunctionName必须在您的主要活动内部实现(从UnityPlayerActivity扩展)(请参阅步骤2)
问候,