6.Android中嵌入Unity内容
6.1 知识点
Android中嵌入Unity内容指什么
在进行Android开发时,可能会有需求显示Unity开发的3D内容。一开始我们启动的是Android应用程序中的Activity,通过Activity我们想要打开Unity开发的内容进行展示,这就是Android中嵌入Unity内容的意思。
注意:Android中嵌入Unity存在限制问题,退出Unity所在的Activity会退出整个App,所以如果存在Android和Unity混合开发的情况,建议采用上节课的Unity中嵌入Android的方式。本节课内容主要做为拓展知识。
新建Unity测试项目
在该项目中添加一些测试内容,比如方块旋转
将该项目发布为Android工程
新建Android测试项目
新建一个Android工程
将知识点二中导出内容中的 unityLibrary 文件夹拷贝到Android工程中
将知识点二中导出内容中的 launcher 文件夹中的res中的内容拷贝到unityLibrary文件夹中合并
修改安卓工程中的 settings.gradle 文件,在最后添加 include ‘:unityLibrary’ 并 点击右上角同步,会出现报错
修改安卓工程中的 gradle.properties 文件,在最后添加 unityStreamingAssets=.unity3d, google-services-desktop.json, google-services.json, GoogleService-Info.plist 并再次同步
修改安卓工程中 app 文件夹中的 build.gradle 文件,在依赖项中 添加 implementation project(‘:unityLibrary’)
在MainActivity按Ctrl跳转到在主Activity的界面,添加一个用于跳转的按钮,并为该按钮添加监听事件,用于打开Unity的Activity
package com.tao.androidrotate;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import com.unity3d.player.UnityPlayerActivity;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btnUnity).setOnClickListener(v->{
Intent intent = new Intent(this, UnityPlayerActivity.class);
startActivity(intent);
});
}
}
修改两个 AndroidManifest.xml 文件,让主Activity的作为主Activity,删除Unity相关Activity的设置
构建apk
打包测试
设置密钥,进行打包
用模拟器进行测试
总结
当我们要进行Android和Unity混合开发时,建议大家采用上节课的Unity中嵌入Android内容。主要原因是,Android中嵌入Unity内容限制较大,当我们切换到Unity的Activity后如果想要关闭当前Unity Activity返回之前的,会让整个App退出,不能达到我们想要的需求。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com