Unity3d调用Anroid(Android Studio环境)方法

例子中使用的开发环境为Android Studio 2.2, Unity3d5.4.3。


Android Studio环境

一.新建Android工程
1.打开Android Studio,【File】->【New】->【New Project】。在Application name中输入zouxin,Company Domain中输入enjoy.com。包名 Package Name 自动生成com.enjoy.zouxin(最好全都小写,尽管有提示首字母大写),必须与unity中打包参数 Bundle Identifier 中的包名一致。点击【Next】
Unity3d调用Anroid(Android Studio环境)方法_第1张图片
2.选择Phone and Tablet,设置Minimum SDK:API16:Android4.1(Jelly Bean)。点击【Next】
Unity3d调用Anroid(Android Studio环境)方法_第2张图片
3.选择 Empty Activity。点击【Next】
Unity3d调用Anroid(Android Studio环境)方法_第3张图片
4.Activity Name及Layout Name保持默认。点击【Finish】

Unity3d调用Anroid(Android Studio环境)方法_第4张图片


二.导入Unity的classes.jar到Android工程
1.在Windows下,打开目录C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes,按Ctrl+C复制classes.jar。
Unity3d调用Anroid(Android Studio环境)方法_第5张图片
2.切换到Android Studio,选择zouxin工程的Project视图,选中zouxin/app/libs文件夹,按Ctrl+V弹出复制对话框,点击【OK】即完成了将unity3d的classes.jar复制到了Anroid工程中。
Unity3d调用Anroid(Android Studio环境)方法_第6张图片
3.在Porject视图中选择app点击右键选择【Open Module Settings】,切换到Dependencies选项卡,点击右边的【+】选择【2 File Dependecy】,选择libs/classes.jar。点击【OK】。
Unity3d调用Anroid(Android Studio环境)方法_第7张图片
三.编写 MainActivity 代码

package com.enjoy.zouxin;
import android.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.unity3d.player.UnityPlayerActivity;

public class MainActivity extends UnityPlayerActivity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    //弹出对话框
    public String ShowDialog(final String _title, final String _content) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setTitle(_title).setMessage(_content).setPositiveButton("Down", null);
                builder.show();
            }
        });

        return "This is Return value";
    }
}


三.修改 AndroidManifest.xml
切换到Anroid视图,打开app/manifests/AndroidManifest.xml。在节点与节点之间加上
Unity3d调用Anroid(Android Studio环境)方法_第8张图片

四.修改app下的build.gradle
切换到project视图,打开zouxin/app/build.gradle
1.将首行的apply plugin: 'com.android.application' 修改为 apply plugin: 'com.android.library' 
2.删除applicationId "com.enjoy.zouxin",位于以下位置。
android {
...
    defaultConfig {
        applicationId "com.enjoy.zouxin"
...
    }    
}

五.编译生成aar包,

1.点击菜单【Build】->【Build APK】,如果能生成成功会在zouxin\app\build\outputs\aar下生成app-debug.aar。


Unity3d环境
1.新建Unity工程取名MainPro。手动创建文件夹Assets\Plugins\Android。

2.复制Android Studio中的app-debug.aar(zouxin\app\build\outputs\aar)及AndroidManifest.xml(位于zouxin\app\src\main)到Unity3d中的Assets\Plugins\Android目录下。

Unity3d调用Anroid(Android Studio环境)方法_第9张图片

3.用WinARA软件打开Unity3d中的Assets\Plugins\Android目录的aar包,删除res文件夹;删除libs下的classes.jar。
4.打开C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Apk下的AndroidManifest.xml,用文件中节点下的以下属性(共4个),替换掉Assets\Plugins\Android下AndroidManifest.xml中的属性(共5个)。
android:theme="@style/UnityThemeSelector"
android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:debuggable="true">

5.在Unity3d创建一个按钮名为TestBtn【GameObject->UI->Button】,调整按钮位置及大小,保存场景名为main.unity。
6.创健一个C#脚本TestBtnScript,在脚本中添加函数。
public void MyShowDialog()
	{
		// Android的Java接口  
		AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
		AndroidJavaObject jo = jc.GetStatic("currentActivity");
		// 参数  
		string[] mObject = new string[2];
		mObject[0] = "Dialog title";
		mObject[1] = "Dialog text is here!!";
		// 调用方法  
		string ret = jo.Call("ShowDialog", mObject);
	}

7.将TestBtnScript脚本与TestBtn绑定,将MyShowDialog函数设为TestBtn的点击响应函数。
8.点击菜单【File】->【Build Settings】,选中Android平台。修改Player Setting中的安卓属性Minimum API Level,使其与Andorid Studio工程中一致(API level 16)。修改Company Name为enjoy,修改Project Name为zouxin,修改Bundle Identifier为com.enjoy.zouxin(与Android Studio中的包名一致)。
(09)
9.将当前场景加入Scenes In Build列表中,完成Build。上传到手机上试运行。
Unity3d调用Anroid(Android Studio环境)方法_第10张图片
OK大功告成。

你可能感兴趣的:(Unity)