首页 > 开发 > Android > 正文

Android与Unity3d的整合

2017-09-08 15:24:10  来源:网友分享

我需要创建一个Android应用程序,它包括部分写在Unity3D中(动画等)一部分在AndroidSDK(我的意思是用java写的实现,清单和资源)

其实这两部分我都有了(至少自认为准备好了 =))我无法弄清楚如何在它们之间进行通信。

我读过很多关于Unity3D和Android集成(主要是一些叫做“插件”的东西)的文章,并没有理解它是如何工作的。

我可以理解的通信的唯一途径是,从Unity3D的脚本(使用AndroidJavaClass和AndroidJavaObject)作出意图(广播),从而我的activity(用Java编写的)可以处理它。可是,我感觉这不是最好的解决办法...

关于这个问题,我阅读到的解答是,需要使用JNI(这是Java本地接口 - 为什么 - ?!?为什么我需要使用本机代码)

我需要java的一些中间层代码,目的是与我的java活动进行通信,使用AndroidNDK编译并作为一个插件包括到我的Unity3D项目?我如何写这个中间层代码?我是否需要使用UnityPlayer来代替“activity”作为基类,为什么?

原问题:Unity3d integration with android

解决方案

来自@spatulamania 的回答:

有一个很棒的教程 running Unity inside of Android Views。一旦启动和运行这个,你就可以很轻松的在你的android应用程序中嵌入unity场景。

当你需要在Android应用程序中从unity端 call Java程序 ,您可以添加以下代码:

AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");

然后你就可以通过activity AndroidJavaObject对象 call 任何你想要的方法:

activity.Call("yourFunctionName", parameters);