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退出,不能达到我们想要的需求

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络期末复习-part1-概述

1、互联网的组成 互联网由两大块组成。 1、边沿部分:由所有连接在互联网上的主机组成,是用户直接使用的部分。 2、核心部分,由大量网络和路由器组成,为边缘部分提供服务。 2、数据传送阶段的三种交换方式的主要特点 1、电路交…

matlab中disp,fprintf,sprintf,display,dlmwrite输出函数之间的区别

下面是他们之间的区别: disp函数与fprintf函数的区别 输出格式的灵活性 disp函数:输出格式相对固定。它会自动将变量以一种比较直接的方式显示出来。对于数组,会按照行列形式展示;对于字符串,直接原样输出并换行。例如…

【数据中心建设资料】数据中心安全建设解决方案,数据中心整理解决方案,数据中心如何做到安全保障,数据中台全方案(Word全原件)

第一章 解决方案 1.1 建设需求 1.2 建设思路 1.3 总体方案 信息安全系统整体部署架构图 1.3.1 IP准入控制系统 1.3.2 防泄密技术的选择 1.3.3 主机账号生命周期管理系统 1.3.4 数据库账号生命周期管理系统 1.3.5 双因素认证系统 1.3.6 数据库审计系统 1.3.7 数据脱敏系统 1.3.8…

Go学习:变量

目录 1. 变量的命名 2. 变量的声明 3. 变量声明时注意事项 4. 变量的初始化 5. 简单例子 变量主要用来存储数据信息,变量的值可以通过变量名进行访问。 1. 变量的命名 在Go语言中,变量名的命名规则 与其他编程语言一样,都是由字母、数…

使用ensp搭建内外互通,使用路由跨不同vlan通信。

1.网络拓扑图 2.规则 (1)允许 (自己)ping通内外网,内外网随便一个pc就可以. (2) 允许(电信)ping通内外网,内外网随便一个pc就可以 (时间问题不做…

基于Vue实现的移动端手机商城项目 电商购物网站 成品源码

📂文章目录 一、📔网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站演示 📸部分截图 🎬视频演示 五、⚙️网站代码 🧱项目结构 💒vue代码预览 六、🔧完整…

使用 postman 传递 binary 类型的图片到后端接口遇到的坑

使用 psotman 传 binary 类型图片报错: -2024-12-04 [http-nio-9090-exec-1] WARN org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver Resolved [org.springframework.http.converter.HttpMessageNotReadableException: Required r…

SQL 优化经历:从 30248.271s 到 0.001s

今天分享一篇SQL优化的文,带你深入了解如何提升查询效率、降低系统负载。 无论你是数据库管理员还是开发者,都不能错过这份关于SQL性能优化的实用指南。让我们一起穿越数据库迷宫,发现隐藏在代码背后的优化黄金点! 场景 用的数据…

开发者如何使用GCC提升开发效率Opencv操作

看此篇前请先阅读 https://blog.csdn.net/qq_20330595/article/details/144134160?spm=1001.2014.3001.5502 https://blog.csdn.net/qq_20330595/article/details/144134160?spm=1001.2014.3001.5502 https://blog.csdn.net/qq_20330595/article/details/144216351?spm=1001…

PyQt 中的无限循环后台任务

在 PyQt 中实现一个后台无限循环任务,需要确保不会阻塞主线程,否则会导致 GUI 无响应。常用的方法是利用 线程(QThread) 或 任务(QRunnable 和 QThreadPool) 来运行后台任务。以下是一些实现方式和关键点&a…

node.js实现分页,jwt鉴权机制,token,cookie和session的区别

文章目录 1. 分⻚功能2. jwt鉴权机制1.jwt是什么2.jwt的应用3.优缺点 3. cookie,token,session的对比 1. 分⻚功能 为什么要分页 如果数据量很⼤,⽐如⼏万条数据,放在⼀个⻚⾯显⽰的话显然不友好,这时候就需要采⽤分⻚…

ED6H系列FPGA口袋实验室

一、产品概述 ED6H系列FPGA口袋实验室是中科亿海微自主研发的基于“FPGA在线教学平台”的教学实践工具,专为高校电子相关专业师生打造,旨在为高校师生创造更具创新性与高效性的教学场景。具有高集成度、小巧便携、可扩展设计及自主可控等特点。本系列共…

实验三:Mybatis-动态 SQL

目录: 一 、实验目的: 通过 mybatis 提供的各种标签方法实现动态拼接 sql 二 、预习要求: 预习 if、choose、 when、where 等标签的用法 三、实验内容: 根据性别和名字查询用户使用 if 标签改造 UserMapper.xml使用 where 标签进行…

Python爬虫——猫眼电影

用python中requests库爬取猫眼电影信息并保存到csv文件中 猫眼专业版 爬取界面 效果预览 代码 import requests import jsonurl1https://piaofang.maoyan.com/dashboard-ajax?orderType0&uuid1938bd58ddac8-02c2bbe3b009ed-4c657b58-144000-1938bd58ddac8&timeStamp…

python 三钱筮法项目开发

三钱筮法项目技术说明 1. 技术栈 GUI框架: CustomTkinter 现代化的Tkinter扩展提供美观的界面组件支持主题定制 数据存储: JSON 卦象数据: gua_info.json记忆数据: memory.json易经解释: detail.json 图像处理: PIL (Python Imaging Library) 处理图标和图片资源 2. 主要功…

yagmail邮件发送库:如何用Python实现自动化邮件营销?

🎥 作者简介: CSDN\阿里云\腾讯云\华为云开发社区优质创作者,专注分享大数据、Python、数据库、人工智能等领域的优质内容 🌸个人主页: 长风清留杨的博客 🍃形式准则: 无论成就大小,…

无人机的计算机仿真模拟控制

🏡作者主页:点击! 🤖编程探索专栏:点击! ⏰️创作时间:2024年12月3日10点24分 神秘男子影, 秘而不宣藏。 泣意深不见, 男子自持重, 子夜独自沉。 论文链接 点击开启你的论文编程之旅h…

vue+mars3d给影像底图叠加炫酷效果

话不多说,直接上效果图: 在这里墙体其实是有一个不太明显的流动效果 实现方式:这里我使用了PolylineEntityWallPrimitive,开始我用的是polygonEntity但是发现实现效果并不好,所有直接改用了线 map.vue文件&#xff1…

浅谈volatile

volatile有三个特性: (1)可见性 (2)不保证原子性 (3)禁止指令重排 下面我们一一介绍 (一)可见性 volatile的可见性是说共享变量只要修改,就可以被其他线…

Redis自学之路—高级特性(实现消息队列)(七)

目录 简介 Redis的Key和Value的数据结构组织 全局哈希表 渐进式rehash 发布和订阅 操作命令 publish 发布消息 subscribe 订阅消息 psubscribe订阅频道 unsubscribe 取消订阅一个或多个频道 punsubscribe 取消订阅一个或多个模式 查询订阅情况-查看活跃的频道 查询…