首先在Unity安装目录中找到Unity提供的classes.jar包,
然后将他导入到Android创建的项目Lib文件中(在Project目录下找到项目对应的Lib文件夹,直接粘贴进去,不要忘了Add as library)
然后需要修改MainActivity,让其继承自UnityPlayerActivity;
在MainActivity类中定义一些需要在unity中调用的公有方法;
完成后对项目进行编译,然后找到Debug文件,我们需要把编译好的文件放入Unity的工程中;
然后把图中选中的libs,res,AndroidMainfest.xml三个文件导入到unity的Plugins->Android文件下。
接下来是在代码中调用:
[csharp] view plain copy
print ?
登录后复制
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); //写法是固定的
AndroidJavaObject jObject=jc.GetStatic<AndroidJavaObject>("currentActivity");//获取当前activity对象,代表Android中的MainActivity;
int result=jObject.Call<int>("test1",23,43); //调用android中定义的“test1”方法;
android使用unity中定义的方法:
[csharp] view plain copy
print ?
登录后复制
UnityPlayer.UnitySendMessage("Canvas","Test2","这个参数从Android调用的");
//第一个参数“Canvas”是需要接收消息的3D对象物体的名称,第二个参数为方法名,第三个为方法的参数
该方法在最好在unity调用Android的方法中实现
1.首先找到unity安装文件下的classes.jar文件,我是unity5.2.0,在路径 :\SoftInstall\Unity5_2_0\Unity\Editor\Data\PlaybackEngines\androidplayer\Variations\mono\Release\Classes\classes.jar 拷贝出来
2.创建android studio 工程,方法如下:
方法如下:
4该Library引入classes.jar放在该 Library 的 libs下,并引入
5编写插件函数,定义一个简单的函数:
添加代码:
[java] view plain copy
6打开这个Library下build.gradle文件,添加代码:用于可执行自动生成Jar 包。然后在Terminal中执行 gradlew makeJar 即可在 unityplugin\build\libs 下看到unityplugin.jar
7.编辑unity工程,并在Assets文件夹下创建 Plugins/Android 目录。
8在unityplugin\build\libs下的 unityplugin.jar拷到 Plugins/Android文件夹下,并将unityplugin\src\main\AndroidManifest.xml也拷到Plugins/Android文件夹下面
9编辑Plugins/Android/AndroidManifest.xml,添加Activity
[html] view plain copy
package 和unity Bundle Id 一致, 而android:name 等于Android 工程 中 unityplugin.jar 中package name+ classname ,如果所示
当然 unity Bundle Id 和 Android 工程 中 unityplugin.jar 中package name一致时,AndroidManifest.xml可以这样写:
10编辑unity 脚本,调用Android插件,代码中添加
[csharp] view plain copy
打包后即可成功 发现result = 15。
现在创建一个静态函数来供unity使用,按照上面的 方法创建一个moudle 命名为 staticplugin(不需要嵌入 classes.jar) ,创建一个文件 StaticPlugin.java,添加内容:
[java] view plain copy
里面有一个静态函数DoubleString,用build.gradle制作一个 staticplugin.jar,放到unity工程的Plugins/Android下面,现在在c#脚本里面添加 函数调用插件:
[csharp] view plain copy
即可得到返回值为 TestStaticPlugin TestStaticPlugin
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删