在Android Studio 中编译导出Jar库,提供函数供 Unity 调用;安卓端提供三个测试函数:弹出对话框
,弹出Toast
,手机振动
;Unity端提供界面,添加三个按钮分别调用这三个安卓提供的函数
Unity 4.3.4 + Android Studio 1.5( buildToolVersion:23.0.2)
新建一个 Android 工程例如叫 JarDemo ,然后依次点击:菜单栏中File -> New -> New Module -> 选择 Android Library -> 库的名称为 android2u3d,然后把layout下的activity_main.xml删掉,目前不需要这个布局文件。同时在MainActivity.java 的 onCreate 函数中将 setContentView(R.layout.activity_main); 删掉。
在Unity4.x安装目录\Editor\Data\PlaybackEngines\androidplayer\bin 下找到classes.jar
文件拷贝到 JarDemo\android2u3d\libs 目录下,然后依次点击菜单栏中File -> Project Structures -> 在左侧栏的Modules下点击 android2u3d ,右侧选择 Dependencies
标签页,点击右侧的加号按钮,选择File Dependency
,然后在弹出的对话框中选择libs下classes.jar;或者直接修改这个库对应的build.gradle文件,在dependencies
节点下添加一行:
compile files('libs/classes.jar')
现在开始需要修改 MainActivity.java 文件了,MainActivity需要继承自 UnityPlayerActivity
public class MainActivity extends UnityPlayerActivity {
private Context mContext = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
}
// 定义一个显示对话框的方法,在Unity中调用此方法
public void ShowDialog(final String mTitle,final String mContent)
{
// 在UI线程下执行
runOnUiThread(new Runnable() {
@Override
public void run() {
AlertDialog.Builder mBuilder = new AlertDialog.Builder(MainActivity.this);
mBuilder.setTitle(mTitle).setMessage(mContent).setPositiveButton("Down", null);
mBuilder.show();
}
});
}
// 定义一个显示Toast的方法,在Unity中调用此方法
public void ShowToast(final String mStr2Show){
// 同样需要在UI线程下执行
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),mStr2Show,Toast.LENGTH_LONG).show();
}
});
}
// 定义一个手机振动的方法,在Unity中调用此方法
public void SetVibrator(){
Vibrator mVibrator=(Vibrator)getSystemService(VIBRATOR_SERVICE);
mVibrator.vibrate(new long[]{200, 2000, 2000, 200, 200, 200}, -1); //-1:表示不重复 0:循环的震动
}
}
关于手机的振动,需要修改AndroidManifest.xml
文件添加权限的:
<uses-permission android:name="android.permission.VIBRATE"></uses-permission>
打开 build.gradle(Module:android2u3d) 在文件后面追加以下代码:
task makeJar(type: Copy) {
delete 'build/libs/android2u3d.jar'
from('build/intermediates/bundles/release/')
into('build/libs/')
include('classes.jar')
rename ('classes.jar', 'android2u3d.jar')
}
makeJar.dependsOn(build)
然后在Terminal
窗口中输入* gradlew makeJar* 来导出 android2u3d.jar;导出成功之后会有BUILD SUCCESSFUL 的提示! jar导出成功之后的物理位置在 JarDemo\android2u3d\build\libs
TIPS:
A: 导出之前最好把不需要打包导出的东西统统干掉,比如 dependencies 下的
testCompile ‘junit:junit:4.12’
compile ‘com.android.support:appcompat-v7:23.1.0’
B: 以及Project -> Project -> JarDemo -> app -> src 下的 androidTest 和 test 这两个直接delect删掉。
C:第一次执行 gradlew makeJar 这个命令会下载一些东西不要关闭窗口,等他下载并配置完成之后再执行这个命令!
新建一个Unity的工程如叫 JarDemo,在 Assets 下Create Folder 名称为 Plugins ,在这个文件夹下继续创建一个 Android,然后再次在Android 下创建一个文件夹 bin ;然后将上边生成的 android2u3d.jar
拷贝到这个 Assets\Plugins\Android\bin 下,然后将安卓工程下JarDemo\android2u3d\src\main 中的 AndroidManifest.xml
拷贝到 Assets\Plugins\Android目录下。
添加C#脚本名称如AndroidAPI,然后添加如下代码:
void Update () {
// 返回键退出
if(Input.GetKey(KeyCode.Escape))
Application.Quit();
}
void OnGUI ()
{
// 通过API调用对话框
if(GUILayout.Button("调用安卓Jar中的函数 ShowDialog !",GUILayout.Height(50)))
{
// Android的Java接口
AndroidJavaClass jc=new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo=jc.GetStatic<AndroidJavaObject>("currentActivity");
// 参数
string[] mObject=new string[2];
mObject[0]="Jar4Android";
mObject[1]="Wow,Amazing!It's worked!";
// 调用方法
jo.Call("ShowDialog",mObject);
}
// 通过API调用Toast
if(GUILayout.Button("调用安卓Jar中的函数 ShowToast !",GUILayout.Height(50)))
{
AndroidJavaClass jc=new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo=jc.GetStatic<AndroidJavaObject>("currentActivity");
jo.Call("ShowToast","Showing on Toast");
}
// 通过API调用手机震动的方法
if(GUILayout.Button("调用安卓Jar中的函数 SetVibrator !",GUILayout.Height(50)))
{
AndroidJavaClass jc=new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo=jc.GetStatic<AndroidJavaObject>("currentActivity");
jo.Call("SetVibrator");
}
}
然后将这个 AndroidAPI.cs 拖动到 Main Camera 上进行绑定。
需要先配置SDK,依次点击菜单栏Edit -> Preferences -> External Tools 在右侧下边的 Android SDK Location
选择你的Android SDK所在目录。
依次点击菜单栏 File -> Build Settings 在弹出的窗口中切换平台到 Android
,右侧 Texture Compression
选择 ETC1 or RGBA16(GLES 2.0),同时勾选Development build
和Autoconnect profiler
这两个复选框。
点击Player Settings
在右侧的Inspector窗口下,常见的需要修改的 Bundle Identifier
等。
除此之外还需要修改下边那个Publishing Settings
中 keystore ,这里我们勾选 Create New KeyCode然后在keystore password
和 Confirm password
添加你设置的密码。
OK,现在使用数据线连接安卓手机,允许调试后,点击Build And Run
开始调试吧~
之前上传过一份源码到网盘,忘了在这里贴出来了!源码网盘地址