Unity3d与android的集成
我需要创建一个android应用程序,它由Unity3d(动画等)和AndroidDK(AndroidDK指的是用java、清单和资源编写的少量活动)上编写的部分组成 事实上,我已经有了这些部分(至少mock已经准备好=),我不知道如何在它们之间进行通信 我读过很多关于unity3d android集成的文章(主要是关于所谓“插件”的东西),但没有理解这名员工是如何工作的=(我理解的主要事情(除了官方参考文献外,每个人都写过这件事)是关于插件的文档非常糟糕…=) 我能理解的唯一沟通方式是从unity3d脚本(使用AndroidJavaClass和AndroidJavaObject)生成意图(广播),以便我的活动(用java编写)能够处理它。但我觉得这不是最好的解决办法 关于这个问题,我读到的是我需要使用JNI(这是java本机接口-为什么?!?-为什么我需要使用本机代码?) 我是否需要在java上创建一些中级代码,目的是与我的java活动进行通信,使用AndroidNDK进行编译,并将其作为插件包含到我的Unity3d项目中?我怎样才能写出中间层呢?我需要使用UnityPlayer而不是“Activity”作为基类吗?为什么?Unity3d与android的集成,android,plugins,java-native-interface,unity3d,Android,Plugins,Java Native Interface,Unity3d,我需要创建一个android应用程序,它由Unity3d(动画等)和AndroidDK(AndroidDK指的是用java、清单和资源编写的少量活动)上编写的部分组成 事实上,我已经有了这些部分(至少mock已经准备好=),我不知道如何在它们之间进行通信 我读过很多关于unity3d android集成的文章(主要是关于所谓“插件”的东西),但没有理解这名员工是如何工作的=(我理解的主要事情(除了官方参考文献外,每个人都写过这件事)是关于插件的文档非常糟糕…=) 我能理解的唯一沟通方式是从uni
这是一个关于基本类的教程。
有一个很好的教程。一旦你启动并运行它,你就可以开始在你的应用程序中的任何地方轻松嵌入场景
当您需要从Unity调用Java Android应用程序时,可以添加以下代码:
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
要完全支持Android,您不需要在java上创建一些中级代码 相反,你应该:
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
activity.Call("yourFunctionName", parameters);
AndroidJavaClass unityPlayer=新的AndroidJavaClass(“com.unity3d.player.unityPlayer”);
AndroidJavaObject activity=unityPlayer.GetStatic(“currentActivity”);
activity.Call(“yourFunctionName”,参数);
你可以在Unity上用Android做很多神奇的事情
注意*:您的FunctionName必须在从UnityPlayerPractivity扩展而来的主活动中实现(参见步骤2)
您好,Hi@spatulamania,您看过本教程了吗?我在努力做到这一点时遇到了一些问题,我可以开始一个新的问题/聊天吗?@mdelomo已经有一段时间了,但是是的,我已经完成了教程,一切都很顺利。如果你对不起作用的事情有具体的问题,你可能应该问一个新问题。其中一条建议是确保您的标准Android开发环境工作正常,并且不要跳过任何步骤。欢迎查看。任何帮助都将不胜感激。嗨,spatulamania在一个普通的Android应用程序中运行Unity。链接不工作。我已经实现了您的代码,但不幸的是,我无法从Unity访问Android活动的方法。所以,请分享更多的想法或源项目。提前感谢。请看一下Unity3d和相应测试项目中静态和非静态活动函数的调用示例。您好!对于iOS项目,有没有一种方法可以像你的一样,通过循序渐进的指导来做到这一点?unity player的活动最近发生了变化。您可以查看资产存储中的一些资产,它们也替换了活动。@LassiKinnunen我的答案是4年前的,所以可能已经过时了。我不再为Unity工作了,我没有机会更新答案,对不起!是的,我只是为了稍后有人发现这一点而发表评论,没问题。这也是我没有时间调查自己的事情,但我知道的是,我的一个项目依赖于这种东西,不再在android上编译高于5.6的unity。
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
activity.Call("yourFunctionName", parameters);