6.Android中嵌入Unity内容

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

×

喜欢就点赞,疼爱就打赏