Android Studio 与 Unity 的交互——加载 Unity 导出的工程到 Android Studio 中
版本信息
Android Studio:(Android Studio-Help-About)
Unity:(Unity-Help-About Unity)
注:
- 中国增强版最新版(时间为2020-02-20)
- 安装好 Android module
一、Unity 中的操作
1. 创建一个 Unity 工程,准备一个 Unity 小游戏。
推荐教程:unity入门教程-小球吃金币实例
2. 导出 Android 工程
首先,找到 File-Build Settings,点击弹出 Build Settings 窗口;
接着,点击 Add Open Scenes,选择你要导出的 scene,platform 选到 Android,勾上 Export Project,确保 Build System 为 “Gradle”;
点击 Player Settings ,右侧弹出窗口,可以设置一些参数,这里将 Product Name 设置为 “RollaBall_Unity”,它表现为导出工程的文件夹的名字;
然后,点击 Build Settings 窗口右下角的 Export,保存到你要保存的地方,我保存到一个名叫 Roll a Ball 的文件夹中;
如果是第一次导出,显示的会是 Switch Platform,点击等待处理一会儿后就会变成 Export,接着点击 Export 就好啦;
保存后的结果差不多是这个样子:
Roll a Ball 文件夹下有 RollaBall_Unity 文件夹,RollaBall_Unity 文件夹下有 Unity 导出的 Android 工程文件;
Unity 下的操作到此结束啦。
二、Android Studio 中的操作
1. 创建一个 Android Studio 工程
推荐学习书籍:《第一行代码》 [手动旺柴]
反正就是自己创建一个项目啦。
2. 以 Module 形式导入 Unity
首先,在 Android Studio 中,点击 File-New-Import Module,选择 Unity 导出的 Android 工程,即 RollaBall_Unity 文件夹;
导入成功后就可以看到我们的 RollaBall_Unity 了,
然后,将 RollaBall_Unity-src-main 下 AndroidManifest.xml 文件中的以下代码段删除:
然后,将 app-src-main 下 AndroidManifest.xml 文件 application 中添加:
tools:replace="android:icon, android:theme"
接着,修改 RollaBall_Unity 下的 build.gradle ,
将
apply plugin: 'com.android.application'
更改为
apply plugin: 'com.android.library'
删除:
applicationId 'com.unity.rollaball'
注:applicationId 里的内容可能和我的不一样,反正删掉这一行就行
删除或注释:
bundle {
language {
enableSplit = false
}
density {
enableSplit = false
}
abi {
enableSplit = true
}
}
改完之后,重新 Sync 以下;
最后,右键 app ,点击 Open Module Settings;
弹出的 Project Structure 窗口中,如下选择:
勾选 RollaBall_Unity ,点击 OK;
Over。
3. 启用 Unity 小游戏
首先,新建一个活动,我命名为 StartUnity,不生成布局文件;
将 StartUnity.java 中的 AppCompatActivity 更改为 UnityPlayerActivity:
public class StartUnity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
然后,在 MainActivity 的布局文件中,创建一个 Button ,编写点击跳转活动程序,跳转到 StartUnity 活动中,代码如下
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this,StartUnity.class);
startActivity(intent);
}
});
}
}
activity_main.xml 中程序如下
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Button"
tools:ignore="HardcodedText" />
</RelativeLayout>
ok啦!
测试一下效果: