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.rhkb.cn/news/485537.html

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

相关文章

40分钟学 Go 语言高并发:服务注册与发现

服务注册与发现 一、系统架构设计 让我们先通过流程图了解服务注册与发现的整体架构: 二、核心组件实现 1. 服务注册中心 package discoveryimport ("context""sync""time" )// ServiceInstance 服务实例 type ServiceInstance…

ESP8266作为TCP客户端或者服务器使用

ESP8266模块,STA模式(与手机搭建TCP通讯,EPS8266为服务端)_esp8266作为station-CSDN博客 ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266 为客户端)_esp8266 sta 连接tcp-CSDN博客…

基于DFA算法实现敏感词过滤

1、什么是DFA? DFA(Deterministic Finite Automaton),即确定有穷自动机。其特征为:有一个有限状 态集合和一些从一个状态通向另一个状态的边,每条边上标记有一个符号,其中一个状态是 初态&#…

详解MySQL安装

目录 Ubantu 1. 使⽤apt安装MySQL 2.查看MySQL状态 3. MySQL 安装安全设置 4.设置密码 卸载MySQL Centos 1. 确认当前的系统版本 2.下载MySQL源 3.安装MySQL 4.启动mysqld 5.查看MySQL状态 6.设置开机自启动 7.查看MySQL密码,并登录 8.修改密码 Ubant…

Android 实现中英文切换

在开发海外项目的时候,需要实现app内部的中英文切换功能,所有的英文都是内置的,整体思路为: 创建一个sp对象,存储当前系统的语言类型,然后在BaseActivity中对语言进行判断; //公共Activitypubl…

使用uniapp开发小程序场景:在百度地图上调用接口返回的设备相关信息并展示

首先在百度地图开发者平台注册微信小程序开发密钥下载百度地图SDK-bmap-wx.min.js,下载地址在项目入口index.html页面进行引入页面中进行调用&#xff0c;代码示例如下<map id"map" longitude"108.95" latitude"34.34" scale"3" :m…

如何使用brew安装phpredis扩展?

如何使用brew安装phpredis扩展&#xff1f; phpredis扩展是一个用于PHP语言的Redis客户端扩展&#xff0c;它提供了一组PHP函数&#xff0c;用于与Redis服务器进行交互。 1、cd到php某一版本的bin下 /usr/local/opt/php8.1/bin 2、下载 phpredis git clone https://githu…

【Vulkan入门】01-列举物理设备

目录 先叨叨git信息主要逻辑VulkanEnvEnumeratePhysicalDevices()PrintPhysicalDevices() 编译并运行程序 先叨叨 上一篇已经创建了VkInstance&#xff0c;本篇我们问问VkInstance&#xff0c;在当前平台上有多少个支持Vulkan的物理设备。 git信息 repository: https://gite…

写NFC标签支持Android安卓Ohos纯血鸿蒙唤醒微信小程序

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.52de2c1b8bEEGz&ftt&id61539185785 Python languagecodestr "en".encode(gbk) titlestrself.lineEdit_title.text().strip().encode(gbk) uriheaderindex sel…

51c自动驾驶~合集39

我自己的原文哦~ https://blog.51cto.com/whaosoft/12707676 #DiffusionDrive 大幅超越所有SOTA&#xff01;地平线DiffusionDrive&#xff1a;生成式方案或将重塑端到端格局&#xff1f; 近年来&#xff0c;由于感知模型的性能持续进步&#xff0c;端到端自动驾驶受到了来…

沃德云商协系统微信小程序PHP+Uniapp

“多组织”的云服务平台&#xff0c;打造总商会、总协会、总校友会、工商联等多组织无障碍沟通合作平台&#xff0c;让各大分会、各大分校友会、分组织实现轻松管理&#xff0c;线上宣传展示、商机挖掘、会员管理、会员服务、跨界交流等, 借助沃德云商协平台系统&#xff0c;让…

网页设计--axios作业

根据以下mock地址中的json数据&#xff0c;使用axios异步方式获取并显示在页面中。 https://apifoxmock.com/m1/3761592-3393136-default/peotfindAll?apifoxApiId171582689 {"code": 1,"msg": "success","data": [{"id": …

【uni-app 微信小程序】新版本发布提示用户进行更新

知识准备 uni.getUpdateManager文档介绍 不支持APP与H5&#xff0c;所以在使用的时候要做好平台类型的判断&#xff0c;如何判断&#xff0c;参考条件编译处理多端差异 代码参考 export const updateApp () > {const updateManager uni.getUpdateManager()updateManag…

ip地址显示本地局域网什么意思?ip地址冲突怎么解决

在日常使用网络的过程中&#xff0c;我们可能会遇到IP地址显示“本地局域网”的情况&#xff0c;同时&#xff0c;局域网内IP地址冲突也是一个常见且令人头疼的问题。本文将首先解释IP地址显示本地局域网的含义&#xff0c;随后详细探讨局域网IP地址冲突的解决方法&#xff0c;…

超清4K视频素材哪里找?优质下载资源网站分享

我是你们的自媒体UP主小李。现在是高清、4K视频大行其道的时代&#xff0c;想要制作出吸引眼球的优质内容&#xff0c;超清4K视频素材必不可少。今天就为大家分享几个宝藏网站&#xff0c;让你的视频创作更轻松、更出彩&#xff01; 蛙学网 首先推荐 蛙学网&#xff0c;这是国内…

Qt Qtablewidget 标题 QHeaderView 增加可选框 QcheckBox

创建自定义QHeaderView #pragma once#include <QObject> #include <QHeaderView> #include <QPainter> #include <QMouseEvent>class SSHeaderView : public QHeaderView {Q_OBJECTprivate:bool isChecked;int m_checkColIdx; public:SSHeaderView(i…

关于Chrome自动同步书签的解决办法

前言 并不一定适用所有用户&#xff0c; 目前我在网上搜集了一些资料&#xff0c;也做了一些尝试。 就我个人总结的经验来讲&#xff0c;分享大家以下几种办法&#xff1a; 1.书签同步插件 点击如下&#x1f517;&#xff1a; Chrome书签同步https://bm.famend.cn/ …

MFC扩展库BCGControlBar Pro v36.0新版亮点:黑色主题中的自动反转图标

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中&#xff0c;并为您节省数百个开发和调试时间。 BCGControlBar专业版 v36.0已全新发布了&#xff0c;这个版本在黑暗主题中添加自动图标反转、新增一个全新的S…

调用大模型api 批量处理图像 保存到excel

最近需要调用大模型&#xff0c;并将结果保存到excel中&#xff0c;效果如下&#xff1a; 代码&#xff1a; import base64 from zhipuai import ZhipuAI import os import pandas as pd from openpyxl import Workbook from openpyxl.drawing.image import Image from io i…

debian ubuntu armbian部署asp.net core 项目 开机自启动

我本地的环境是 rk3399机器&#xff0c;安装armbian系统。 1.安装.net core 组件 sudo apt-get update && \sudo apt-get install -y dotnet-sdk-8.0或者安装运行库&#xff0c;但无法生成编译项目 sudo apt-get update && \sudo apt-get install -y aspnet…