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一些中间级的代码。

相反,你应该:

  1. 在Android SDK上创build一个Lib项目。
  2. 创build1个主要活动扩展UnityPlayerActivity
  3. 创build其他您需要的活动并将其添加到清单中。
  4. 创build资源,布局…
  5. 通过将所有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)

问候,