unity与android拓展

一.AndroidStudio打包

1.通过Unity导出Android Studio能够打开的工程

步骤

        1.设置导出基本信息:公司名、游戏名、图标、包名等关键信息

        2.在File——>Build Settings中,勾选 Export Project 选项

        3.点击Export 导出按钮

2.在Android Studio中打开Unity导出的工程

 步骤

        1.打开Android Studio

        2.新选择 打开工程

        3.选择 之前导出的对应文件夹

        4.弹出提示时,使用Android Studio中的 Android SDK,可以避免打包失败

        5.等待工程加载结束

        6.更新Gradle版本,保证之后打包成功

3.使用Android Studio生成应用程序apk

步骤

        1.在 工具栏——>Build——>Build Bundle...——>Build APK

         构建一次工程,保证构建成功,根据报错解决问题

         常见问题:

         1.The option 'android.enableR8' is deprecated 由于新版本Gradle默认使用R8混淆

           所以不需要这个选项设置了

           在Project选项中 找到 gradle.properties 删除 android.enableR8

         2.SDK Tools 版本不匹配

           更新SDK使用的路径,使用Android Studio自己的路径,或者更新SDK

        2.在 工具栏——>Build——>Build Bundle...——>Generate Signed Bundle

         发布APK,可以设置密钥库相关内容后进行打包即可

        3.测试生成的apk文件

4.总结

 如果不需要将Unity功能嵌入到Android项目中进行二次开发

        我们一般不使用该种打包方式

        直接在Unity中进行打包更加的方便

        我们只需要保证能够正常通过Android Studio打包Unity导出的工程即可

二.Android开发原理

1.Android应用程序的基本构成

 1.Android SDK

         提供了用于开发Android应用程序的各种API和工具

        2.编程语言

         使用Java或者Kotlin语言进行开发,他们提供了丰富的库和API

        3.XML配置文件

         Android应用程序使用XML来定义UI布局、样式和资源信息等

        4.应用程序组件

         Android应用程序有四种组件组成:

         4-1:Activity(活动)

             主要用于实现用户界面,代表一个屏幕或窗口,包含了各种UI组件,按钮,文本,输入框等等

         4-2:Service(服务)

             是一种可以在后台执行长时间运行操作的组件,没有用户界面,一般用于处理和交互无关的逻辑

             比如:上传、下载、音乐播放等

         4-3:Broadcast Receiver(广播接收器)

             主要用于接受系统或者其他应用程序发出的广播消息

             消息可以来自系统事件(比如网络连接变化、设备启动等),也可以来自其它应用程序

         4-4:Content Provider(内容提供程序)

             用于管理应用程序数据,可以让其它应用程序或系统访问本应用中的数据,也可以让本应用访问其它应用或系统的数据

             比如用于存储应用程序数据,图片、音频、视频等

        等等

        在开发Android应用程序时,其实主要就是在编写基于这四种组件的逻辑

        日常开发时,更多的就是在利用Android SDK中的API 开发Activity活动组件(类似游戏中UI界面逻辑开发)

        如果有其他后台或者拓展功能,才会使用其它3种组件

2.AndroidManifest.xml文件的作用

它是Android应用程序的应用清单文件

        每个应用程序都必须包含一个,并且文件名必须是AndroidManifest.xml

        该文件中包含了应用程序的配置信息,Android系统会根据该配置来运行应用程序

        该文件中包含的重要信息有:

        1.应用程序包含的四大组件的内容(Activity,Service,Broadcast Receiver,Content Provider)

        2.应用程序的权限(存储权限、互联网访问权限等等)

        3.应用程序元数据(程序名称、版本号、图标、包名等等)

        4.应用程序启动信息(默认启动哪一个Activity)

        常用标签作用:

        manifest标签:主要包含包名、版本号等等

        uses-permission标签:应用程序权限

        application标签:应用程序各组件包含在其中,还可以配置一些图标、文本、样式等等信息

        activity标签:Activity组件的具体信息

        meta-data标签:为Activity提供元数据,可以通过API获取该数据

        intent-filter标签:为组件声明意图(intent),其中还包含action(意图类型)和category(意图类别)两个子标签等等

3.了解这些对于我们的意义

了解了Android开发的这些基本原理信息后

        之后在学习相互内嵌式,我们就能明白我们在做什么

        Unity程序在打包到Android平台后,其实就是作为一个Activity存在的

        之后我们在和Android相互嵌入式,我们只需要把Unity作为一个Activity单位来处理即可

三.Unity中嵌入android内容

1.Unity中嵌入Android内容指什么

 在Android开发中Activity(活动)就是我们看到的一个界面(屏幕)

 那么所谓的Unity中嵌入Android内容就是通过Unity打开Android中制作好的Activity

 让Unity可以和Android中制作的功能进行交互

2.Activity创建

 在Android项目中新建一个Activity并生成aar包

        1.打开我们之前学习Unity和Android交互中建立的Android工程

        2.在com.tarkr.mytestgame上点击右键,新建一个空的Activity

        3.检查AnadroidManifest.xml中是否多出了对应的Activity配置

        4.在MainActivity中添加函数,用于打开新建的Activity

        5.生成aar包

3.Unity中进行交互处理

  将aar包导入Unity后进行相关设置后导出包

        1.按照之前讲解的知识点,删除aar包中需要删除的内容

        2.书写对应交互逻辑,用于测试打开Android中的Activity

        3.在Unity中导出包,用Android Studio打开

        注意:如果要实现内嵌Android Activity,我们需要在Unity中导出安卓工程包后使用Android Studio进行打包

            主要原因是,Unity中无法下载关联的相关包,会导致打包出去的内容报错

4.使用Android Studio打包

使用AndroidStudio打开我们通过Unity生成的Android包

        利用我们之前学习的Android Studio打包的相关知识,进行构建,打包

        根据报错,来针对性的进行修改和配置

        可能出现的报错:

        1.打包出去后,运行后闪退,找不到对应类。

         解决方案:引用缺失的包,重新打包

        2.安装后出现两个图标。

         解决方案:修改AnadroidManifest.xml配置文件,移除LAUNCHER相关配置

        3.界面xml报错。

         解决方案:需要修改构建配置文件 加一个对应的引用 然后还需要在属性配置当中允许使用 Androidx

        4.如果出现了Appcompat报错。解决方案:

         3-1.修改配置文件 加一个android:theme = "@style/Theme.AppCompat.Dialog"

         3-2.让我们新建的Activity直接继承Activity

        等等(根据具体报错内容,查询资料进行解决)

5.总结

  Unity中嵌入Android内容的关键点就是

        最终打包时,我们需要在Unity中打包出安卓工程包后

        再使用Android Studio进行打包

        根据各种报错信息来一步步的解决问题

        缺少什么就添加什么,配置有问题就修改配置

四.Android嵌入unity内容

1.Android中嵌入Unity内容指什么

 在进行Android开发时,可能会有需求显示Unity开发的3D内容

        一开始我们启动的是Android应用程序中的Activity

        通过Activity我们想要打开Unity开发的内容进行展示

        这就是Android中嵌入Unity内容的意思

        注意:Android中嵌入Unity存在限制问题,退出Unity所在的Activity会退出整个App

            所以如果存在Android和Unity混合开发的情况,建议采用上节课的Unity中嵌入Android的方式

2.新建Unity测试项目

1.在该项目中添加一些测试内容,比如方块旋转

2.将该项目发布为Android工程(不用设置包名等)

3.新建Android测试项目

 1.新建一个Android工程

        2.将Unity导出的android项目内容中的 unityLibrary 文件夹拷贝到Android工程中

        3.将Unity导出的android项目内容中的 launcher 文件夹中的res中的内容拷贝到unityLibrary文件夹中合并

        4.修改安卓工程中的 settings.gradle 文件,在最后添加 include ‘:unityLibrary’ 并 点击右上角同步

        5.修改安卓工程中的 gradle.properties 文件,在最后添加 unityStreamingAssets=.unity3d, google-services-desktop.json, google-services.json, GoogleService-Info.plist 并再次同步

        6.修改安卓工程中 app 文件夹中的 build.gradle 文件,在依赖项中 添加 implementation project(':unityLibrary')

        7.在主Activity中添加一个用于跳转的按钮,并为该按钮添加监听事件,用于打开Unity的Activity

        8.修改两个 AndroidManifest.xml 文件,让主Activity的作为主Activity,删除Unity相关Activity的设置

4.打包测试

 设置密钥,进行打包

 用模拟器进行测试

5.总结

当我们要进行Android和Unity混合开发时

建议大家采用上节课的Unity中嵌入Android内容

主要原因是,Android中嵌入Unity内容限制较大,当我们切换到Unity的Activity后

如果想要关闭当前Unity Activity返回之前的,会让整个App退出,不能达到我们想要的需求

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/929371.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux通过fork()和execve()调用其他程序在子线程中运行

fork()的的使用见上一期 linux C fork()和系统调用文件-CSDN博客 简单说一下fork的作用就是创造一个子进程和当前进程一起执行下面的代码 pid_t fork(void) execve的作用为:让当前进程内容销毁大部分,重新执行一个程序 int execve (const char *__path…

整数benders分解算法

benders分解是将问题分为限制主问题和子问题,然后主问题向子问题传入变量,接着根据子问题求解的信息向主问题返回割(最优割和可行割),这些割以约束的形式被添加到主问题中。其中,子问题因为求解得到的解是可…

Unity之(多语言)Localization本地化工具

一、安装和配置 Localization Localization是Unity基于对多种语言和区域变体所设计的一个本地化工具,常用与切换多国语言时文本、图片的动态替换。 1.安装Localization插件 Window—> Package Manager,打开Package Manager面板 Packages选择Unity Re…

使用Mac下载MySQL修改密码第一篇_数据库

Mac下载MySQL MySQL官网链接MySQL​​​​​​ 当进入到官网后下滑到community社区,进行下载 然后选择community sever下载 这里就是要下载的界面,如果需要下载之前版本的话可以点击archives, 可能会因为这是外网原因,有时候下…

服务器数据恢复—EVA存储硬盘磁头和盘片损坏离线的数据恢复案例

服务器存储数据恢复环境&故障: 一台HP EVA存储中有23块硬盘,挂接到一台windows server操作系统的服务器。 EVA存储上有三个硬盘指示灯亮黄灯,此刻存储还能正常使用。管理员在更换硬盘的过程中,又出现一块硬盘对应的指示灯亮黄…

Linux 网络基础

文章目录 1. 计算机网络背景2. 协议2.1 OSI七层模型2.2 为什么要有TCP/IP协议? 3. 协议与操作系统的关系4. 网络传输基本流程4.1 局域网通信原理4.2 局域网通信流程4.3 跨网络通信流程 5. Socket编程预备知识5.1 端口号5.2 网络字节序5.3 socket编程接口 6. 网络命令…

一站式指导:在Neo4j与PostgreSQL间实现高效数据同步

作者:后端小肥肠 🍇 我写过的文章中的相关代码放到了gitee,地址:xfc-fdw-cloud: 公共解决方案 🍊 有疑问可私信或评论区联系我。 🥑 创作不易未经允许严禁转载。 姊妹篇: 数据同步的艺术&#…

AI一键生成原创圣诞印花图案

一、引言 随着科技的飞速发展,AI 已经深入到我们生活和工作的各个角落,为创意设计领域带来了前所未有的变革。在圣诞即将来临之际,想要设计独特的圣诞印花图案却又担心缺乏灵感或专业技能?别担心,千鹿 AI 为我们提供了…

视频 的 音频通道提取 以及 视频转URL 的在线工具!

视频 的 音频通道提取 以及 视频转URL 的在线工具! 工具地址: https://www.lingyuzhao.top/toolsPage/VideoTo.html 它提供了便捷的方法来处理视频文件,具体来说是帮助用户从视频中提取音频轨道,并将视频转换为可以通过网络访问的URL链接。无…

图片的懒加载

目录 懒加载的来源 事件监听 IntersectionObserver 懒加载的来源 图片的来加载其实就是延迟加载,我们知道浏览器的可视范围是有限的,现在网页的内容越来越丰富,一般网页的内容都是需要滚动才能完成浏览 如果网页有很多图片,然…

【每日刷题】Day162

【每日刷题】Day162 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 3302. 字典序最小的合法序列 - 力扣(LeetCode) 2. 44. 通配符匹配 - 力扣&…

Hadoop生态圈框架部署 伪集群版(四)- Zookeeper单机部署

文章目录 前言一、Zookeeper单机部署(手动部署)1. 下载Zookeeper安装包到Linux2. 解压zookeeper安装包3. 配置zookeeper配置文件4. 配置Zookeeper系统环境变量5. 启动Zookeeper6. 停止Zookeeper在这里插入图片描述 注意 前言 本文将详细介绍Zookeeper的…

捷联惯导原理和算法预备知识

原理和算法预备知识 牛顿第一运动定律-惯性定律:如一物体不受外力作用,它将保持静止状态或匀速直线运动状态不变。 牛顿第二运动定律:表达式为Fma,。其中F为物体所受的合力,m为物体的质量,a为物体的加速度。这个公式…

工业—使用Flink处理Kafka中的数据_ChangeRecord1

使用 Flink 消费 Kafka 中 ChangeRecord 主题的数据,当某设备 30 秒状态连续为 “ 预警 ” ,输出预警 信息。当前预警信息输出后,最近30

简单注册器

简单注册器 还是想查壳 发现这是apx文件 放入JEB里进行反编译 在JEB里使用快捷键Tab 可以反编译 转化成java语言 我们在搜索一下字符串flag 得到了下面这一串字符串 这里他对这串字符串进行了一系列的加密算法 img src"C:\Users\22069\Pictures\Screenshots\屏幕截图 20…

MySQL两阶段提交目的

阶段提交的过程 事务执行阶段:事务开始执行,InnoDB执行SQL语句的具体操作,如数据修改、删除等,并将这些操作记录在内存中。写入Redo Log(准备阶段):事务即将提交时,首先将事务相关的…

33 基于单片机的智能窗帘控制系统

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机,采用DHT11温湿度传感器检测温湿度,滑动变阻器连接ADC0832数模转换器转换模拟,光敏传感器,采用GP2D12红外传感器,通过LCD1602显示屏显示…

Qt关于padding设置不起作用的的解决办法

观察以下的代码: MyWidget::MyWidget(QWidget *parent): QWidget{parent},m_btn(new QToolButton(this)) {this->setFixedSize(500,500);m_btn->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);m_btn->setIcon(QIcon("F:tabIcon/person-white.s…

zookeeper在确认config无误后仍处于standalone模式的解决方法

jps查看是否有QuorumPeerMain进程 停止服务后该进程仍然存在,输入: ps -ef | grep QuorumPeerMain | grep -v grep | awk {print $2} | xargs kill 之后再启动一次进程 bin/zkServer.sh start 查看状态 bin/zkServer.sh status 发现报错解决&#…

Electron-vue 框架升级 Babel7 并支持electron-preload webapck 4 打包过程记录

前言 我这边一直用的electron-vue框架是基于electron 21版本的,electron 29版本追加了很多新功能,但是这些新功能对开发者不友好,对electron构建出来的软件,使用者更安全,所以,我暂时不想研究electron 29版…