Unity程序嵌入android项目中

个人搞Unity,对Android不是很熟悉,实现这个功能遇到很多问题特此记录一下。

我这里用的是Android Studio2021.2.1.15,Unity是2019.4.17

jdk是1.8,androidsdk就准备的版本比较多

目录

一、参考文档

二、原理说明

三、初步演示

四、具体步骤

1.Unity工程导出

2.AndroidStudio配置


一、参考文档

大佬文章:AndroidStudio接入Unity工程并实现相互跳转的示例代码 - H5W3

unity项目导入到android studio_千丘星的博客-CSDN博客_android studio unity

Unity论坛1:Integration Unity as a library in native Android app Version 2 - Unity Forum

Unity论坛2:Using Unity as a library in native iOS/Android apps - Unity Forum

二、原理说明

1.将Unity工程整个导出作为Android程序的一个模块进行嵌入。

2.Android程序通过一个Activity窗口全屏渲染Unity程序。

三、初步演示

Unity程序嵌入android项目中_第1张图片

四、具体步骤

1.Unity工程导出

①构建一点界面功能方便后续测试,我这里就只弄了两个按钮互相显示隐藏(测试的话,我就直接拖动事件绑定的)。

Unity程序嵌入android项目中_第2张图片

 ②【File】->【BuildSetting】切换打包平台为安卓平台

切换完成后勾选【Export Project】

Unity程序嵌入android项目中_第3张图片

 ③点击上图的【Player Setting】->【Other Setting】

将Scripting Backend改为IL2CPP

Minimun API Level:可自定义版本,但是得与Android Studio工程

 Unity程序嵌入android项目中_第4张图片

④点击【File】->【Player Setting】->【Export】导出工程

Unity程序嵌入android项目中_第5张图片

2.AndroidStudio配置

①新建Android工程

Unity程序嵌入android项目中_第6张图片

Unity程序嵌入android项目中_第7张图片

 注:一定要注意这个MinimunSDK要与之前Unity程序打包的版本一致。

②把Unity打包的工程作为Android项目的Module导入

Unity程序嵌入android项目中_第8张图片

 Unity程序嵌入android项目中_第9张图片

 导入之后,Clean Build和Rebuild一下,如果没错就下一步。

我导入这个报错

Unity程序嵌入android项目中_第10张图片

删除intent-filter标签的内容Unity程序嵌入android项目中_第11张图片

 在Active标签中 添加android:exported=“false”

 ③配置unityLibrary作为app的Module

Unity程序嵌入android项目中_第12张图片

 Unity程序嵌入android项目中_第13张图片

 在项目的Dependencies为app添加unityLibrary作为api添加

 Unity程序嵌入android项目中_第14张图片

 Unity程序嵌入android项目中_第15张图片

 ④创建UnityActivity.java作为Unity程序的显示窗口

Unity程序嵌入android项目中_第16张图片

import android.os.Bundle;

import com.unity3d.player.UnityPlayerActivity;

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

 ⑤修改app原来的MainActivity

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn=findViewById(R.id.button);

        btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                //跳转到Unity界面

                Intent intent=new Intent(MainActivity.this,UnityActivity.class);

                startActivity(intent);

            }

        });
    }
}

并且为MainActivity的activity_main添加一个按钮(可以Ctrl+鼠标左键【R.layout.activity_main】直接跳转设置) 或者去app/src/main/res/layout找到修改

Unity程序嵌入android项目中_第17张图片

⑥在app的AndroidMainfest.xml添加项目那句  

        tools:replace="android:theme,android:label,android:icon"

Unity程序嵌入android项目中_第18张图片

 并在原有Activity下添加

        

Unity程序嵌入android项目中_第19张图片

 ⑦在app的build.gradle中添加下面这句

 Unity程序嵌入android项目中_第20张图片

其次在app的main->res->values->strings.xml里加入这行代码。

Game view

Unity程序嵌入android项目中_第21张图片

⑨然后Build就好了。

PS:后续想再总结一篇安卓和Unity通信的,看缘分。

你可能感兴趣的:(android,unity)