Android|Android Studio创建Unity插件

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 工程,方法如下:
Android|Android Studio创建Unity插件
文章图片
Android|Android Studio创建Unity插件
文章图片
Android|Android Studio创建Unity插件
文章图片
Android|Android Studio创建Unity插件
文章图片
Android|Android Studio创建Unity插件
文章图片


3在该工程上上创建Library,我取名unityplugin方法如下:
Android|Android Studio创建Unity插件
文章图片



Android|Android Studio创建Unity插件
文章图片
Android|Android Studio创建Unity插件
文章图片


4该Library引入classes.jar放在该 Library 的 libs下,并引入
Android|Android Studio创建Unity插件
文章图片
Android|Android Studio创建Unity插件
文章图片
Android|Android Studio创建Unity插件
文章图片


5编写插件函数,定义一个简单的函数:
Android|Android Studio创建Unity插件
文章图片
Android|Android Studio创建Unity插件
文章图片


添加代码:

package com.netease.unityplugin; import android.os.Bundle; import com.unity3d.player.UnityPlayerActivity; //引入头文件 /** * Created by qzyn2320 on 2016/5/15. */public class UnityPlugin extendsUnityPlayerActivity{ //继承头文件 @Override protected void onCreate(Bundle savedInstanceState) { //创建一个Activity super.onCreate(savedInstanceState); }public int add(int x, int y) { returnx+y; } }



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


package 和unity Bundle Id 一致, 而android:name 等于Android 工程 中 unityplugin.jar 中package name+ classname ,如果所示
Android|Android Studio创建Unity插件
文章图片


当然 unity Bundle Id和 Android 工程 中 unityplugin.jar 中package name一致时,AndroidManifest.xml可以这样写:
Android|Android Studio创建Unity插件
文章图片


10编辑unity 脚本,调用Android插件,代码中添加
public void TestAdd() { AndroidJavaClass ja = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject jo = ja.GetStatic("currentActivity"); int result = jo.Call("add",8,7); m_text.text = result.ToString(); }

打包后即可成功 发现result = 15。


现在创建一个静态函数来供unity使用,按照上面的 方法创建一个moudle 命名为 staticplugin(不需要嵌入 classes.jar) ,创建一个文件 StaticPlugin.java,添加内容:

package com.netease.staticplugin; /** * Created by qzyn2320 on 2016/5/15. */ public class StaticPlugin { publicStaticPlugin() {} public static String DoubleString(String message){ returnmessage + message; }}

里面有一个静态函数DoubleString,用build.gradle制作一个 staticplugin.jar,放到unity工程的Plugins/Android下面,现在在c#脚本里面添加 函数调用插件:
public void TestStaticPlugin() { AndroidJavaClass ja = new AndroidJavaClass("com.netease.staticplugin.StaticPlugin"); string result = ja.CallStatic("DoubleString", "TestStaticPlugin"); m_text.text = result.ToString(); }


即可得到返回值为 TestStaticPlugin TestStaticPlugin
















【Android|Android Studio创建Unity插件】

    推荐阅读