您的位置:首页 > 移动开发 > Unity3D

Android Studio创建Unity插件

2016-05-15 21:59 344 查看
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 工程,方法如下:











3在该工程上上创建Library,我取名unityplugin方法如下:







4该Library引入classes.jar放在该 Library 的 libs下,并引入







5编写插件函数,定义一个简单的函数:





添加代码:

package com.netease.unityplugin;
import android.os.Bundle;
import com.unity3d.player.UnityPlayerActivity; //引入头文件
/**
* Created by qzyn2320 on 2016/5/15.
*/

public class UnityPlugin extends  UnityPlayerActivity{ //继承头文件
@Override
protected void onCreate(Bundle savedInstanceState) { //创建一个Activity
super.onCreate(savedInstanceState);
}

public int add(int x, int y)
{
return  x+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

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.netease.androidplugin"
android:versionCode="1"
android:versionName="1.0">

<application
android:allowBackup="true"
android:label="@string/app_name"
android:supportsRtl="true">
<activity android:name="com.netease.unityplugin.UnityPlugin"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>


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插件,代码中添加 

public void TestAdd()
{
AndroidJavaClass ja = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = ja.GetStatic<AndroidJavaObject>("currentActivity");
int result = jo.Call<int>("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 {
public StaticPlugin()
{}
public static String DoubleString(String message){
return message + message;
}

}里面有一个静态函数DoubleString,用build.gradle制作一个 staticplugin.ja
8ec3
r,放到unity工程的Plugins/Android下面,现在在c#脚本里面添加 函数调用插件:
<pre name="code" class="csharp"> public void TestStaticPlugin()
{
AndroidJavaClass ja = new AndroidJavaClass("com.netease.staticplugin.StaticPlugin");

string result = ja.CallStatic<string>("DoubleString", "TestStaticPlugin");
m_text.text = result.ToString();
}

即可得到返回值为TestStaticPluginTestStaticPlugin

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: