轻量级客户端框架(Unity3D)
文章平均质量分 63
CDN资源站点;热更新;UI框架;Http下载器;编辑器拓展;状态同步帧同步框架;客户端性能优化;shader图形;
天才小熊猫oo
游戏开发方面5年经验,游戏开发领域专家,CSDN平台优质作者,就职于上海某公司高级客户端开发岗位,目前主要研究方向是架构和图形,擅长客户端框架、性能优化、游戏战斗方面技术。
展开
-
U3D客户端框架之 音效管理器 与 Fmod介绍安装导入Unity
Unity内置的Audio底层使用的是FMOD,但是功能不够齐全,高级一点的功能如混合(Mix)等无法使用;音效管理应该和Unity工程解耦合,这样子可以减轻音效设计师的负担;使用FMOD后,游戏中我们只需要关心sound event名字就可以了,对具体音效资源不会产生依赖;目前FMOD支持Windows, Mac OSX, Android, iOS,其实官方文档中说了对XBOX One,PlayStation系统等系统都有支持;结合FMOD Studio的官方文档,我们可以总结出使用。原创 2023-01-13 00:56:26 · 2760 阅读 · 0 评论 -
U3D客户端框架(资源管理篇)之资源热更新管理器 ResourceManager
游戏或者软件内的 美术/脚本代码等资源 发生变化时,无需下载客户端重新进行安装,而是在应用程序启动的情况下,通过比对本地资源与CDN资源的MD5码,如果本地资源与CDN中的资源有差异,则优先使用CDN中的资源,以增量的方式进行下载更新这些变化了的 美术/脚本代码等资源。根据经验判断,每次强制用户换包将会造成 5%-15%+ 的用户流失,所以热更新对于商业价值来说是必要的。一个合格的产品采用热更新的方式更新资源是必要的。原创 2023-01-07 22:15:12 · 900 阅读 · 3 评论 -
U3D客户端框架(资源管理篇)之可寻址资源管理器 还在用难用的AssetBundle?快来使用新的可寻址资源系统AddressableManager,轻松玩转资源管理
AddressableManager 可寻址资源管理器系统它能够帮助解决游戏开发中最重要的一些挑战:高效率和轻松的内容管理。在管理游戏资源时,往往很难维持好的标准,从而避免让项目变得杂乱无章。最主要的问题在于不同职责的资源管理系统之间的耦合。而且,项目中资源的存储,加载和载入后资源的使用方法都有紧密的联系。假如,我们可能要在Resources文件夹存储某个精灵。这会让Unity在构建版本时,把精灵存到特定的存档文件中。由于精灵存在了这样的位置,我们必须通过Resources API来加载该精灵。原创 2023-01-07 17:47:32 · 493 阅读 · 2 评论 -
U3D客户端框架(资源管理篇)之资源加载管理器
资源加载管理器模块的主要职责就是资源加载的管理,从物理结构上对该模块进行了拆分成了一个单独的文件,资源加载管理器是加载器中偏底层的一个部分;资源加载管理器负责AssetBundle的加载、Asset资源的加载、资源加载完成后缓存进对预制池、卸载功能;原创 2023-01-07 16:16:33 · 549 阅读 · 0 评论 -
U3D客户端框架(资源管理篇)之主资源加载器模块设计实现
主资源加载器是为面向用户而设计的上层应用层类,用户使用主资源加载器作为文件加载器加载文件,加载器可以通过Assetbundle方式加载,Http方式加载资源。原创 2023-01-04 16:27:20 · 659 阅读 · 0 评论 -
U3D客户端框架(资源管理篇)之任务管理器模块设计实现
任务管理器的设计,类似于Handler类,为了同步或者异步加载时调用任务处理函数,是对执行某项任务(加载任务/下载任务/游戏内任务)在更新流程,完成流程,停止流程的一层封装,使用了状态模式。原创 2023-01-04 13:23:05 · 708 阅读 · 0 评论 -
U3D客户端框架(资源管理篇)之AssetBundle加载器
它是资源三大加载器之一,一个非常好用的AssetBundle加载器,也可以直接通过异步的资源加载函数直接加载资源,资源加载函数会自动去查找资源所在的AB包,自动加载AB,它支持多种加载方式,File模式加载、UnityWebRequest加载,AssetBundle方式加载(在Unity5.6以上版本,请不要使用WWW加载器,它会产生内存峰值)。支持加密AB包(只建议加密敏感资源,因为会影响性能)。同时它也绕开了Unity3D早期版本的一些bug,比如多个协程并发加载同一个资源,在android系统会出错。原创 2023-01-03 18:56:43 · 648 阅读 · 0 评论 -
U3D客户端框架(资源管理篇)之自动化打Assetbundle包管理器
我们使用的是自定义的Assetbundle资源打包器,没有使用unity自带的那个打标签的那种方式。因为使用自定义打包管理器方式有如下优点:1.对AssetBundle打包功能更方便拓展;2.可控性跟强一些;3.效率更高打包速度更快;文件夹是否为一个资源包:如果勾选一个文件打包成一个ab包;否则每个文件打包成一个ab包是否是初始资源:在文件。原创 2023-01-03 17:54:26 · 1203 阅读 · 0 评论 -
U3D客户端框架(资源管理篇)之可写区资源管理器
顾名思义,可写区资源管理器就是对读写区文件访问API的封装,对检查可写区域资源的API的封装、资源版本记录作用、可写区资源信息的记录。原创 2022-12-30 11:59:39 · 637 阅读 · 0 评论 -
U3D客户端框架(资源管理篇)之只读区资源管理器
只读区资源管理器设计的主要目的就是以流的方式读取出只读区的资源。调用上层的callback函数,传出字节流数组给调用层。代码在设计上区分开了只读区和可写区的资源管理模块,因为这样符合职责单一的原则。这个比较简单没什么就是两个函数。原创 2022-12-30 00:14:16 · 379 阅读 · 0 评论 -
U3D客户端框架(资源管理篇)之资产加载器 AssetLoaderRoutine
加载assetbundle内的资源。原创 2023-01-03 19:03:13 · 414 阅读 · 2 评论 -
U3D客户端框架之支持断点续传的文件下载器实现方案
文件下载器是应用程序的基础模块,为应用程序与外部网络交互提供了必要的桥梁。该模块设计初衷是为了热更新过程中,下载CDN站点上的文件资源,所以下载器会验证 要下载的文件是否存在于CDN中。如果存在允许下载器继续工作;如果不存在会跳过本地下载。做这层检测是为了安全性考虑,不允许随意下载网络资源。如果有需求可以跳过这层检测。 下载文件时,不必重头开始下载,而是从上次中断的位置继续下载,这样的功能就叫做断点续传。 在下载文件的过程中,打断文件下载的原因有很多,比如网络不稳定,导致下载,中原创 2022-12-03 22:49:37 · 1460 阅读 · 0 评论 -
U3D客户端框架之实现基于UnityWebRequest的Http服务 实现HttpCallBackArgs参数类、HttpRoutine访问器、HttpManager管理器
说明一下HttpCallBackArgs继承EventArgs,是为了准守规范,让看代码的人一看到这个类型,就知道这是一个事件类型,使用的时候直接吧EventArgs转换成具体的事件参数类即可。进行网络请求,这个方法是为了满足今天的 HTTP 通信的需求,而且诞生的新类,相对于WWW这个方法,会更灵活一些,但是用起来却很不方便。:Http访问Url的轮询器,核心代码的所在文件;Get和Post的区别可以看 引用模块中 Get和Post对比的链接,那篇文章中详细讲解了Get和Post的异同和使用场景。原创 2022-11-26 23:59:39 · 1608 阅读 · 7 评论 -
U3D客户端框架之日志写入器 把Log日志写入到可写区 方便调试
Unity3d 客户端 日志写入器 把Log日志写入到可写区 方便调试原创 2022-11-18 00:25:37 · 542 阅读 · 0 评论 -
U3D客户端框架之小堆顶高性能定时器测试10W计时器耗时1.9ms
a.添加时间复杂度为O(1);b.删除时间复杂度为O(1);c.执行一个定时器的时间复杂度为O(1); 之前写的服务器定时器是全部轮询更新,这种计时器性能太差,每一帧都要全部迭代一次,客户端层应该把CPU性能压榨到极致,能少循环的尽量少循环尽可能的减少CPU循环次数,所以优化了算法,使用了小堆顶定时器。小顶堆是基于二叉树的排序算法,将剩余时间最小的节点交换到树的根节点。每次更新的时候只取树的根节点,判断是否超时,如果超时会对树重新进行排序,排序完成后继续轮询,查询到根节点无超时为止。Timer原创 2022-11-17 00:06:24 · 675 阅读 · 2 评论 -
U3D客户端框架之基于类对象池的可回收变量代码实现
因为原先已经写过一篇文章了,里面已经写明白了类对象池是什么?具体特征是什么?优缺点都有什么?大家如果有兴趣可以点下面的文章去细看一下。如果懂原理直接看代码即可。原创 2022-11-15 23:56:24 · 347 阅读 · 1 评论 -
U3D客户端框架之类对象池技术优化C#语言GC
Unity3d框架搭建 使用 类对象池技术 优化 C#语言 GC原创 2022-11-15 23:05:28 · 666 阅读 · 1 评论 -
U3D客户端框架之商业项目中的 FSM 有限状态机 实现代码
有限状态机(Finite State Machine, FSM),又称有限状态自动机,简称状态机,是指在有限个状态之间按照一定规律转换的逻辑状态。原创 2022-11-08 00:22:56 · 983 阅读 · 0 评论 -
U3D客户端框架之 拓展StringBuilder实现InsertNoGC、IndexOf、LastIndexOf、ReplaceNoGC、AppendNoGC API 减少GC
StringBuilder拓展 实现InsertNoGC、IndexOf、LastIndexOf、ReplaceNoGC、AppendNoGC API 减少GC原创 2022-11-06 20:04:10 · 306 阅读 · 0 评论 -
U3D客户端框架之封装 DeviceUtil 获取设备唯一ID和设备型号
Unity3D 封装 DeviceUtil 获取设备唯一ID和设备型号原创 2022-11-02 23:59:44 · 2405 阅读 · 0 评论