UM1——Android开发基础
UM1——Android开发基础
Android开发基础
本系列学习内容
新版Unity打包安卓应用程序(Unity2019版及以上版本)
旧版Unity打包安卓应用程序(Unity2019版以前)
打包安卓应用程序相关设置
Build Settings
Player Settings
Android Studio打包安卓应用
调试相关
Unity内调试安卓应用程序
Unity Remote(快速的测试设备的输入相关功能)
Android Logcat (查看日志打印,内存统计,屏幕截图或录屏,堆栈跟踪)
Android Studio内调试安卓程序
原生安卓游戏开发如何进行
要进行原生的安卓(Android)游戏开发,我们需要掌握的知识有:
Java语言 或 Kotlin语言
对应的开发工具(IDE):Android Studio(推荐)、Eclipse、IntelliJ IDEA等
Android 开发流程
Android SDK 的使用
等等
学会了这些,我们才能开发在安卓(Android)平台上运行的应用程序(游戏、应用等)
而Unity作为跨 ...
UH3L10——游戏功能—资源更新删除
UH3L10——游戏功能—资源更新删除
关于资源对比
我们之前实现的资源对比文件下载并没有执行对比操作就直接覆盖了,因此我们必须要进一步实现本地资源对比消息与远端资源对比消息的比对
由于需要执行比对操作,因此我们不能在下载到远端资源对比消息后就直接覆盖本地的
最好的做法是先比对本地与远端的资源对比文件,然后根据不同去更新AB包,确认全部下载正确了,最后才覆盖
因此,比对资源数据时一定会在内存或者硬盘上存储两份资源对比数据,这里有两种做法:
保存到临时文件中,待AB包下载完成后,再用该临时文件覆盖本地对比文件
压根不保存文件,直接通过下载流读取出字节数组数据转存为字符串,待AB包下载完毕后再保存为本地资源对比文件
根据我们之前实现的逻辑来看,第一种做法明显对逻辑要求的改动更少,因此采用第一种方法
改动下载资源对比文件的逻辑
首先,我们不能下载后直接覆盖本地原有的资源对比文件,因此额外创建一个新的临时文件
1234567891011121314151617public async void DownLoadABCompareFile(UnityAction<bool> ov ...
UH3L9——游戏功能—默认资源转存问题
UH3L9——游戏功能—默认资源转存问题
对于游戏中的AB包资源存储路径
AB包的存放路径有两个选择:
streamAssetsPath:只读路径,编辑器状态的streamAssetsPath下文件可随Unity打包一起被打包出去
persisentDataPath:可读可写路径,但是编辑器状态下的persisentDataPath内的文件不会被打包出去
因此,是否需要进行streamingAssetsPath中资源转存到persistentDataPath,取决于你项目中的AB包管理器中的加载机制
若都从persistentDataPath中加载,则需要从streamingAssetsPath转存(若默认资源很多,会浪费玩家的硬盘存储空间)
若persistentDataPath中没有资源,则从streamingAssetsPath中加载,则无需转存(不会浪费玩家空间)
AB包下载流程图
UEDL12——AssetDatabase公共类
UEDL12——AssetDatabase公共类
本章代码关键字
12345678910111213AssetDatabase //用于在编辑器环境中管理和操作项目中的资源(Assets)的编辑器公共类AssetDatabase.CreateAsset() //将内存内的资源创建为工程下的本地文件,不能在StreamingAssets中创建资源,不能创建预设体AssetDatabase.CreateFolder() //在工程文件夹下创建文件夹AssetDatabase.CopyAsset() //将工程下的某个资源复制到工程下的另一个文件夹AssetDatabase.MoveAsset() //将工程下的某个资源移动到工程下的另一个文件夹AssetDatabase.DeleteAsset() ...
UH3L8——编辑器功能—设置默认资源
UH3L8——编辑器功能—设置默认资源
前置知识点
C#文件操作
Unity编辑器相关 [MenuItem()]、Selection、AssetDatabase
为何要设置默认资源
发布后,让不需要更新的AB包或者第一次启动必须要使用的AB包不从服务器上下载,直接从StreamingAssets文件夹内读取
目标
将编辑器中选中的AB包资源文件(无后缀名的文件),复制到StreamingAssets文件夹内,打包后可以随游戏程序一起发布作为默认资源
实现流程
使用特性为菜单栏添加一个选项AB包工具/移动选中资源到StreamingAssets中,从选项里触发该功能MoveABToStreamingAssets()
MoveABToStreamingAssets内
通过编辑器Selection类中的方法,获取在Project窗口选中的资源,如果未选中资源就不执行后续逻辑直接返回出去
遍历选中的资源对象,通过AssetDatabase.GetAssetPath获取资源的路径,根据该路径截取文件名
检查该文件名是否有'.',如果有说明有后缀名,说明不是AB包, ...
UEDL5——Selection公共类
UEDL5——Selection公共类
本章代码关键字
1234567891011Selection.activeObject //获取当前选择的单个ObjectSelection.activeGameObject //获取当前选择的单个GameObjectSelection.activeTransform //获取当前选择的单个TransformSelection.objects //获取当前选择的所有ObjectSelection.gameObjects //获取当前选择的所有GameObjectSelection.transforms //获取当前选择的所有TransformSelection.count //获取当前选择的对象数Selection.Contains() //可以判断某个对象是否在编辑器窗口内被选中,传入要判断的对象Selection.GetFiltered<>() ...
CS3L24——string
CS3L24——string
本章代码关键字
1234567891011string[] //通过索引可以获取字符串特定位置字符string.ToCharArray() //将字符串转换为字符数组string.Format() //字符串拼接(格式化)string.IndexOf() //正向查找字符位置,从0开始从左往右开始数,返回遇到的第一个相符的下标号,如果字符串内不存在这样的字符,就返回-1string.LastIndexOf() //反向查找字符位置,从0开始从右往左开始数,返回遇到的第一个相符的下标号,如果字符串内不存在这样的字符,就返回-1string.Remove() //移除传入的下标位置及该下标之后的所有字符,或者传入两个参数,移除某个下标后指定数量的字符,返回一个新的字符串string.replace() //会替换所有与传入参数相同的字符串,替换为第二个参数的字符串,返回一个新的字符串strin ...
UH3L7——下载AB包
UH3L7——下载AB包
前置知识点
FTP下载相关(Unity网络开发基础中)
C#异步函数
C#Task任务类
目标
在下载完资源对比文件并解析了其中的消息后,根据资源对比文件下载AB包(全部下载,目前不需要对比本地资源来确认哪些AB包文件需要下载)
实现流程
由于下载使用异步执行,因此下载AB包方法DownLoadABFile是异步方法,需要传入所有AB包下载完毕后要执行的回调函数
Main脚本的start方法内传入的下载回调函数内,下载完资源对比文件并解析后
解析完下载好的资源对比文件后,执行ABUpdateManager的DownLoadABFile方法,
传入下载好所有AB包要执行的回调函数,和下载好一个AB包后要执行的回调函数
输出AB相关函数执行完毕
ABUpdateManager的DownLoadABFile方法内
遍历解析资源对比文件得到的ABInfo字典remoteInfo,将所有的AB包文件名字放入到待下载的列表downLoadList内
声明变量:下载路径,本轮下载是否成功,下载完毕的AB包文件名列表,最多 ...
UH3L6——下载资源对比文件
UH3L6——下载资源对比文件
必备知识点
string字符串相关(C#核心)
FTP下载相关(Unity网络开发基础中)
目标
从Ftp服务器上下载在编辑模式时上传的资源对比文件,并解析该资源对比文件,获取所有AB包的名字,大小和MD5码
实现流程
由于下载使用异步执行,因此下载资源对比方法DownLoadABCompareFile是异步方法,需要在传入资源对比文件下载完毕后要执行的回调函数
Main脚本的start方法内
程序启动后调用ABUpdateManager的DownLoadABCompareFile方法,传入回调匿名函数
ABUpdateManager的DownLoadABCompareFile方法内
先声明下载是否完毕,最多重试次数以及下载路径的变量
进入循环下载流程,如果没有下载完毕且最多重试次数大于0时就下载资源对比文件,
创建Task任务调用下载方法DownLoadFile,传入文件名和下载路径
ABUpdateManager的DownLoadFile内
尝试执行下载流程,如果下载报错输出下载失败并 ...
UH3L5——创建AB包下载管理器脚本
UH3L5——创建AB包下载管理器脚本
前置知识点:单例模式
AB包的下载更新很明显只需要在刚启动游戏的时候才需要执行一次
因此在更新完AB包后过场景时,它不需要保留在场景上可以直接移除,节省内存
这和其他需要过场景不销毁的管理器存在差异,如果需要使用时在实例化即可
1234567891011121314151617181920212223using UnityEngine;public class ABUpdateManager : MonoBehaviour{ private static ABUpdateManager instance; public static ABUpdateManager Instance { get { if (instance == null) { GameObject obj = new GameObject("ABUpdateManager"); ...