
在Unity中调用Android的JAVA代码,首先需要创建一个Android项目。由于项目需要使用Unity提供的接口,我们需要将这些接口classes.jar引入至当前工程。在Finder中找到Unity安装目录,右键选择“显示包内容”,然后进入Contents/PlaybackEngines/AndroidPlayer/bin目录,找到并复制classes.jar。
接下来编写JAVA代码。UnityTestActivity作为主Activity,当Unity程序启动时会调用这个Activity,它在AndroidManifest.xml中配置。UnityTestActivity需要继承UnityPlayerActivity,这是classes.jar包提供的接口类。该类对外提供了两个方法接口:StartActivity0(String name)与StartActivity1(String name),这两个方法在Unity中由C#脚本调用,传递的参数name将传递给新打开的Activity。
设置XML文件和布局文件对熟悉Android编程的同学来说很熟悉。将写好的Java代码发布成jar包后,创建Unity工程,文件夹结构如下:Plugins->Android。将Eclipse中的Android工程文件拷贝至Plugins->Android文件夹,除了src文件夹,将其它文件夹全部拷贝。在Plugins->Android文件夹中创建bin文件夹,将生成的.jar文件拷贝进来,名称可以自定义,但jar包内部必须遵循com->xys->你的class文件的结构,否则运行时会提示找不到类文件。
接下来是如何在C#中调用Android的方法。加入如下代码:首先创建AndroidJavaClass对象,指定类名为"com.unity3d.player.UnityPlayer";接着通过GetStatic方法获取当前Activity对象,参数为"currentActivity";最后调用Call方法调用UnityTestActivity.JAVA类中的方法,如StartActivity0或StartActivity1,传递参数即可。例如:jo.Call("StartActivity0", "第一个Activity"),参数“第一个Activity”即为C#中传递过去的字符串。