框架为项目中提供基础功能,如资源管理、UI框架、网络通信、消息管理、场景管理、数据解析及存取等,同时定义了一系列规范包括编码的,例如参数命名、注释、缩进等
以及行为准则,例如加载场景必须用框架的xxx接口,贴图必须放在xxx文件夹下等
框架包含内容如下:
LoginModule需要完成按照顺序如下:
1.建立网络连接,如果没有网络弹出提示框,否则跳转到步骤2
2.扩展包更新,需要先检查扩展包是否需要更新,如果要更新,检查内存是否足够,内存不足弹出提示框,否则跳转步骤3
3.解压扩展包,如果要解压,检查内存是否足够,内存不足弹出提示框,否则跳转4
4.热更新
1)获取服务端版本号文件,如果需要强更,跳转到应用商店,如果需要更新,跳转下一步,否则跳转步骤5
2)获取服务端MD5文件,对比本地MD5,获取需要更新的ab包列表(热更方式已改为Addressable)
3)下载并解压需要更新的ab包,这边需要检查内存是否足够,内存不足弹出提示框
5)更新结束。登录SDK如腾讯账号,获取账号状态,如封号,弹出提示,否则跳转步骤6
6)登录游戏服务器(简称游服),获取游戏状态,如在维护状态,弹出提示,否则跳转步骤7
7)新手引导(顺序跟步骤8可以对换。看情况)
8)预加载资源(可无,看情况),预加载结束跳转步骤9
9)请求服务端初始化数据(如Main场景要显示内容需要的数据、小红点等),初始数据都接收完毕跳转步骤10
10)切换到Main场景,打开主界面
1.账号类:创建、登录、切换
2.充值
3.外部分享
4.打开外部链接,如论坛、社区等
这就需要一个专门的模块Socket负责和游服的通信,包括网络的连接、消息的接收、心跳包的发送、断线重连的监听和处理
1.场景的加载、卸载、切换
2.加载新的场景时需要卸载旧场景的的资源,清除GC
3.支持场景资源的预加载
1.加载资源,包括从本地加载、从ab包加载、从网络下载,而ab包的加载是其中最麻烦的地方了(ab包依赖、冗余)
2.ab包的加载,包括Mainfest的加载和依赖的加载
3.资源、ab包的缓存和卸载:引入引用计数和销毁计时(没有资源引用且非常驻资源且销毁计时结束接可以回收了)
4.不同资源类型的加载。如图片、音频、预制体、场景、配置表等
1.界面的加载、卸载
2.打开、关闭、隐藏、显示界面,这边隐藏是指界面被遮挡的意思,一般来说,界面被遮住时,应该关闭界面的更新
3.界面栈的管理,主要是用于场景切换时需要回到上一个场景打开的界面栈
4.界面的基类:弹窗、全屏窗口
5.需要的功能:图片镜像(节省资源)、滑动列表(复用)、模糊背景等
1.添加、移除事件的方法
2.需要触发事件的方法
3.Lua端的消息机制(已改用ILRuntime,不需要Lua)
4.C#端的消息机制
1.日志开关。只有开发版本开启,因为日志还是比较耗性能的
2.堆栈日志界面:ERROR时弹出界面,该界面显示错误的堆栈日志。方便QA测试时查看日志
3.FPS帧率的显示
4.游戏正式上线以后,我们很难拿到用户的错误日志,这时候我们需要把错误的日志上传到我们的服务器
5.当游戏崩溃时我们是拿不到unity打印的日志的,这时候就需要接入FireBase了,它可以帮我们把崩溃的详细日志上传到网页
1.本地设置,设置存储在本地,更换设备就失效了,一般存成\Asset\json\xml或unity的PlayerPrefs
2.保存服务端,设置上传到服务器,这样更换设备也不影响设置
1.命令行参数解析,命令的参数包括平台、是否打ab包、是否重新导出、版本号、版本类型(develop\release)等等你想配置的参数
2.设置图集名字,防止项目成员不按规则设置图集
3.设置ab包名字、打ab包、压缩ab包(热更包过大用户容易流失)
4.生成MD5,对比旧的MD5,上传需要更新的ab包和新的MD5文件到服务器
5.导出unity工程
6.打包,IOS使用Xcode打ipa,Android使用Android Studio打APK
7.发布版本,测试包发布到群里,正式包由运营上传到应用商店(运营真棒)
1.图集检查工具、图集名字设置工具
2.ab包名字、依赖检查工具
3.资源导入检查设置
4.配置、服务器协议同步工具
1.CPU
2.GPU
3.UI优化,包括GC和界面打开速度
4.UWA接入
-
代码热更选择了ILRuntime,是因为主流热更方式如下
(1)XLua如果选用C#开发,打补丁热更方式很麻烦,而且补丁Lua还需要用C#再重新写一遍,实际项目中补丁方式往往不能实现,需要重新打包,造成用户丢失
(2)ToLua或其他方式,选择使用Lua开发,考虑到统一语言,未采用 -
资源热更方式选择Addressable,是因为
(1)AssetBundle资源管理工作流,可以把模型、贴图、预制体、声音、甚至整个场景都打入压缩包中,缺点是需要开发者自己写一套资源管理系统来管理依赖、引用关系
(2)可寻址资源系统是现在Unity现在主推的资源管理工作流,他的基石是AB,所以他拥有之前AB所有的功能,并且它已经帮助开发者实现了资源管理系统