Unity3D调用android方法(非插件方式)

今日长缨在手,何时缚住苍龙。这篇文章主要讲述Unity3D调用android方法(非插件方式)相关的知识,希望能为你提供帮助。
关于Unity3Dproject与androidproject的转换与合并,请參考我的另外一篇博客。假设你对Unity3Dproject增加到androidproject的过程不熟悉。也请先看完以下这篇博客:
android与Unity3D交互,fragment显示unity3d视图。

以下,我们来说说本博客的终端,Unity3D调用android的方法:
1.首先,在网络上大家能够看到非常多把android project打包,然后以插件的方式,放入Unity3D工程中来调用的方式,这样的方式,我不做评论,可是非常麻烦,所以我也没有进行尝试。大家有兴趣能够到网络上搜索一下看看。

2.假设讲Unity3D的project导出为android project然后进行再次开发的过程中。须要Unity3D调用android的方法,这个时候,再使用1中的方法。显然是不合适的。


那么我们要怎么样来做呢?分为以下几部分:
1.在初始化UnityPlayer的Activity中加入方法,例如以下:

/** * 測试Unity调用Android的方法 */ public void testMethod(String param){ System.out.println(" 參数为:" +param); }


对于提供的方法,不能够进行UI操作,由于Unity3D对于android的UI线程来说,仅仅是个子线程。假设要进行UI操作,能够使用Handler发消息。

2.在Unityproject中。利用c#文件来书写,Unity调用的代码:
public static void ActivateShareImage(string content) { if (Application.platform == RuntimePlatform.IPhonePlayer) { _PressButton3(content); } else if (Application.platform == RuntimePlatform.Android) { UISystem.Console(" test method!" ); AndroidjavaClass jc = new AndroidJavaClass(" com.unity3d.player.UnityPlayer" ); AndroidJavaObject jo = jc.GetStatic< AndroidJavaObject> (" currentActivity" ); jo.Call(" testMethod" , " unity" ); } else { } }

3,假设你已经有android项目了,那么就把新修改的Unity3D的项目导出为android project的,把新导出的project中的assets的目录,替换掉之前老的project中的,这样做的目的是更换Unity的修改,假设修改了其它的东西,也是这样更换的。可是假设你的assets目录下还有其它资源。请保留。

假设。你没有android项目,那么就把Unity3D的项目导出为android的project项目使用。


4.对于AndroidJavaClass这个类。以及它提供的方法,大家能够參考以下的站点:
AndroidJavaClass 安卓Java类


【Unity3D调用android方法(非插件方式)】这样,就能够完毕调用了。根本就不须要使用插件。关于android向Unity3D发送消息,日后会发博客叙述。










    推荐阅读