- 博客(69)
- 资源 (4)
- 收藏
- 关注
原创 使用阿里云一键部署 幻兽帕鲁服务器 菜鸟教程 一键快速部署
本文通过介绍如何 从购买阿里云服务器(windows系统)、到一键傻瓜式快速部署、再到连接到帕鲁服务器,简介明了,易上手,没相关专业知识的游戏玩家也能一键傻瓜式搭建服务器环境。
2024-02-07 22:03:58 1347
原创 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 2995
原创 U3D客户端框架(资源管理篇)之资源热更新管理器 ResourceManager
游戏或者软件内的 美术/脚本代码等资源 发生变化时,无需下载客户端重新进行安装,而是在应用程序启动的情况下,通过比对本地资源与CDN资源的MD5码,如果本地资源与CDN中的资源有差异,则优先使用CDN中的资源,以增量的方式进行下载更新这些变化了的 美术/脚本代码等资源。根据经验判断,每次强制用户换包将会造成 5%-15%+ 的用户流失,所以热更新对于商业价值来说是必要的。一个合格的产品采用热更新的方式更新资源是必要的。
2023-01-07 22:15:12 1033 3
原创 U3D客户端框架(资源管理篇)之可寻址资源管理器 还在用难用的AssetBundle?快来使用新的可寻址资源系统AddressableManager,轻松玩转资源管理
AddressableManager 可寻址资源管理器系统它能够帮助解决游戏开发中最重要的一些挑战:高效率和轻松的内容管理。在管理游戏资源时,往往很难维持好的标准,从而避免让项目变得杂乱无章。最主要的问题在于不同职责的资源管理系统之间的耦合。而且,项目中资源的存储,加载和载入后资源的使用方法都有紧密的联系。假如,我们可能要在Resources文件夹存储某个精灵。这会让Unity在构建版本时,把精灵存到特定的存档文件中。由于精灵存在了这样的位置,我们必须通过Resources API来加载该精灵。
2023-01-07 17:47:32 612 2
原创 U3D客户端框架(资源管理篇)之资源加载管理器
资源加载管理器模块的主要职责就是资源加载的管理,从物理结构上对该模块进行了拆分成了一个单独的文件,资源加载管理器是加载器中偏底层的一个部分;资源加载管理器负责AssetBundle的加载、Asset资源的加载、资源加载完成后缓存进对预制池、卸载功能;
2023-01-07 16:16:33 586
原创 U3D客户端框架(资源管理篇)之主资源加载器模块设计实现
主资源加载器是为面向用户而设计的上层应用层类,用户使用主资源加载器作为文件加载器加载文件,加载器可以通过Assetbundle方式加载,Http方式加载资源。
2023-01-04 16:27:20 688
原创 U3D客户端框架(资源管理篇)之任务管理器模块设计实现
任务管理器的设计,类似于Handler类,为了同步或者异步加载时调用任务处理函数,是对执行某项任务(加载任务/下载任务/游戏内任务)在更新流程,完成流程,停止流程的一层封装,使用了状态模式。
2023-01-04 13:23:05 762
原创 U3D客户端框架(资源管理篇)之AssetBundle加载器
它是资源三大加载器之一,一个非常好用的AssetBundle加载器,也可以直接通过异步的资源加载函数直接加载资源,资源加载函数会自动去查找资源所在的AB包,自动加载AB,它支持多种加载方式,File模式加载、UnityWebRequest加载,AssetBundle方式加载(在Unity5.6以上版本,请不要使用WWW加载器,它会产生内存峰值)。支持加密AB包(只建议加密敏感资源,因为会影响性能)。同时它也绕开了Unity3D早期版本的一些bug,比如多个协程并发加载同一个资源,在android系统会出错。
2023-01-03 18:56:43 684
原创 U3D客户端框架(资源管理篇)之自动化打Assetbundle包管理器
我们使用的是自定义的Assetbundle资源打包器,没有使用unity自带的那个打标签的那种方式。因为使用自定义打包管理器方式有如下优点:1.对AssetBundle打包功能更方便拓展;2.可控性跟强一些;3.效率更高打包速度更快;文件夹是否为一个资源包:如果勾选一个文件打包成一个ab包;否则每个文件打包成一个ab包是否是初始资源:在文件。
2023-01-03 17:54:26 1284
原创 很好用的Unity编辑器扩展工具 Odin Inspector教程
Odin Inspector是Unity的一个插件,让您可以享受拥有强大,自定义和用户友好编辑器的所有工作流程优势,而无需编写任何自定义编辑器代码。Odin包含许多功能,例如Static Inspector,Project Validation,Odin Editor Windows和我们的开源Odin Serializer,它允许您在需要多态对象结构时扩展Unity的序列化功能,或者希望在运行时序列化和反序列化数据。
2022-12-30 12:14:17 2116 1
原创 U3D客户端框架(资源管理篇)之可写区资源管理器
顾名思义,可写区资源管理器就是对读写区文件访问API的封装,对检查可写区域资源的API的封装、资源版本记录作用、可写区资源信息的记录。
2022-12-30 11:59:39 660
原创 U3D客户端框架(资源管理篇)之只读区资源管理器
只读区资源管理器设计的主要目的就是以流的方式读取出只读区的资源。调用上层的callback函数,传出字节流数组给调用层。代码在设计上区分开了只读区和可写区的资源管理模块,因为这样符合职责单一的原则。这个比较简单没什么就是两个函数。
2022-12-30 00:14:16 391
原创 UML类图中 前缀符号 + - # ~ 的含义
UML类图中 前缀符号 + - # ~ 的含义 UML类图中有各种符号,新手看着一脸懵逼,今天我就来讲一下各个符号到底是啥意思。其实这些符号都是在描述类属性的可见性:UML中,可见性分为4级public 公用的用+ 前缀表示 ,该属性对所有类可见protected 受保护的:用 # 前缀表示,对该类的子孙可见private 私有的:用- 前缀表示,只对该类本身可见package 包的:用 ~ 前缀表示,只对同一包声明的其他类可见
2022-12-03 23:03:48 4762 3
原创 U3D客户端框架之支持断点续传的文件下载器实现方案
文件下载器是应用程序的基础模块,为应用程序与外部网络交互提供了必要的桥梁。该模块设计初衷是为了热更新过程中,下载CDN站点上的文件资源,所以下载器会验证 要下载的文件是否存在于CDN中。如果存在允许下载器继续工作;如果不存在会跳过本地下载。做这层检测是为了安全性考虑,不允许随意下载网络资源。如果有需求可以跳过这层检测。 下载文件时,不必重头开始下载,而是从上次中断的位置继续下载,这样的功能就叫做断点续传。 在下载文件的过程中,打断文件下载的原因有很多,比如网络不稳定,导致下载,中
2022-12-03 22:49:37 1560 1
原创 C++代码 让CPU使用率变成波形
C++代码 让CPU使用率变成波形 这个只能是单核CPU,多核心CPU做不到这个效果,主要用到了Sin Cos函数,和Sleep函数做出的效果。上代码!
2022-12-02 15:47:46 484
原创 C++中使用 ofstream ifstream 写入读取文件
之前做表格增量编译的时候,每次需要把表格的数据读取进来。每次编译好之后需要把文件的Md5列表写到文件里。当时对ofstream ifstream 不熟悉,所以写了一个测试代码,亲测有效。
2022-12-02 15:41:01 1187
原创 Unity3d Application中的所有目录以及含义
本地可写区临时缓存目录,测试输出Log:temporaryCachePath:C:/Users/zhang/AppData/Local/Temp/DefaultCompany/GameClient。本地可写区目录,测试输出Log:persistentDataPath:C:/Users/zhang/AppData/LocalLow/DefaultCompany/GameClient。本工程Asset的完整路径,测试输出Log:dataPath:E:/game_all/GameClient/Assets。
2022-11-29 00:05:45 1434 2
转载 [Unity Time系统知识] Time类
(只读)表示以秒计游戏开始的时间,固定时间以定期间隔更新(相当于fixedDeltaTime)直到达到time属性。(只读)不考虑timescale对时间修改的总时间,也就是程序实际运行时间。(只读)表示从上一帧到当前帧时间差值(不受TimeScale影响),返回实际时间差。(只读)表示从上一帧到当前帧时间差值(会受TimeScale影响),以秒为单位。(只读)表示一个平稳的deltaTime,根据前 N帧的时间加权平均的值。(只读)表示从程序运行的总时间,会随着游戏的暂停而停止计算。
2022-11-27 21:08:40 756 1
原创 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 1755 7
原创 HTTP请求中Get和Post的区别是什么?
Get和Post是Http请求中最常用的两种请求方法英文直译翻译过来:Get=得到;Post=邮寄。1.Get请求是访问Url,Post向服务器传递需要处理的数据2.Get传递数据大小不超过2kb,Post没有限制3.Get请求的参数会在Url上暴露显示,Post请求参数在Requestbody里,所以相对Get来说,POST安全性较高4.Get 请求的静态资源会被浏览器缓存,Post不会被缓存5.Get传递的数据类型是文本,Post是文本或者二进制。
2022-11-26 23:24:12 635 1
原创 U3D客户端框架之小堆顶高性能定时器测试10W计时器耗时1.9ms
a.添加时间复杂度为O(1);b.删除时间复杂度为O(1);c.执行一个定时器的时间复杂度为O(1); 之前写的服务器定时器是全部轮询更新,这种计时器性能太差,每一帧都要全部迭代一次,客户端层应该把CPU性能压榨到极致,能少循环的尽量少循环尽可能的减少CPU循环次数,所以优化了算法,使用了小堆顶定时器。小顶堆是基于二叉树的排序算法,将剩余时间最小的节点交换到树的根节点。每次更新的时候只取树的根节点,判断是否超时,如果超时会对树重新进行排序,排序完成后继续轮询,查询到根节点无超时为止。Timer
2022-11-17 00:06:24 800 2
原创 U3D客户端框架之基于类对象池的可回收变量代码实现
因为原先已经写过一篇文章了,里面已经写明白了类对象池是什么?具体特征是什么?优缺点都有什么?大家如果有兴趣可以点下面的文章去细看一下。如果懂原理直接看代码即可。
2022-11-15 23:56:24 381 1
原创 U3D客户端框架之商业项目中的 FSM 有限状态机 实现代码
有限状态机(Finite State Machine, FSM),又称有限状态自动机,简称状态机,是指在有限个状态之间按照一定规律转换的逻辑状态。
2022-11-08 00:22:56 1065
原创 U3D客户端框架之 拓展StringBuilder实现InsertNoGC、IndexOf、LastIndexOf、ReplaceNoGC、AppendNoGC API 减少GC
StringBuilder拓展 实现InsertNoGC、IndexOf、LastIndexOf、ReplaceNoGC、AppendNoGC API 减少GC
2022-11-06 20:04:10 369
原创 浅谈比较C#中的char 和 C++中的char 之间的区别
经过以上的比对,其实可以得到一个结果,就是C#中的char对字符的表示范围是从 U+0000 -> U+ffff,也就是说 C# 中的char 其实就是 C++中的wchar_t类型,可以用于表示世界上大多数已知的语言。
2022-11-05 15:26:14 720
原创 U3D客户端框架之封装 DeviceUtil 获取设备唯一ID和设备型号
Unity3D 封装 DeviceUtil 获取设备唯一ID和设备型号
2022-11-02 23:59:44 2554
原创 分布式服务器框架之Servers.Core库实现 DES对称加密算法;SHA1信息摘要算法;MD5信息摘要算法
DES对称加密算法;SHA1信息摘要算法;MD5信息摘要算法
2022-10-19 12:02:06 350
原创 分布式服务器框架之Server.Core库中实现 XXTEA分组加密算法
XXTEA,又称Corrected Block TEA,又是XTEA的升级版 。目前XXTEA还暂未被破解。XXTEA加密算法比较复杂,如果要彻底理解得把引用链接里给出的公式吃透差不多才能理解,这里面又涉及密码学和数学的很多知识,读者实在看不懂也没关系,直接拿去用就行,知道怎么用就可以了。
2022-10-19 11:02:13 740
原创 分布式服务器框架之Servers.Core中 实现Log模块设计 写入MongoDB数据库
实现Log模块设计 写入MongoDB数据库游戏服务器中都需要用到Log模块,log模块存在的意义第一个是将log输出到控制台又或者是写入到log文件中,出了BUG方便定位;第二是常用于将用户的数据(例如玩家登录、道具购买量)将这种log统计到数据库中,方便统计用户留存信息、数据分析等。
2022-10-16 22:24:50 489
原创 分布式服务器框架之Server.Common库中实现 秒级定时器
定时器模块是服务器中的常用组件,本文带你实现一个具有基本功能的定时器模块要想设计一个定时器模块,一般包含两部分,一个是定时器对象(ServerTimer),另一个管理定时器对象的管理者(TimerManager)也叫定时器容器;定时器使用了C#内System库里面的Timer定时器作为定时器的主驱动
2022-10-15 16:31:46 414
原创 分布式服务器框架之Server.Core库中实现YFUniqueEntity、YFUniqueIDBase 管理MongoDB 自定义Id的自增
Server.Core库中实现YFUniqueEntity、YFUniqueIDBase 管理MongoDB 自定义Id的自增
2022-10-12 22:15:23 233
原创 分布式服务器框架之Servers.Core库中实现 MongoEntityBase 实现阻塞 异步对MongoDB的增删改查
Servers.Core库中实现 MongoEntityBase 实现阻塞 异步对MongoDB的增删改查
2022-10-12 22:08:16 316
原创 分布式服务器框架之Servers.Core库中实现MongoDB的ObjectId和Json转换
这个是个转换的工具类,主要目的是把C#中的ObjectId类转换成Json格式,Json抓换成Mongo的ObjectId,相当于是个序列化反序列化的过程。在以后的接收和发送数据的时候需要用到。
2022-10-12 21:58:57 348
原创 分布式服务器框架之Servers.Core库中实现MongoDB对象实体类 管理对象ID
Servers.Core库中实现MongoDB对象实体类 管理对象ID
2022-10-12 21:55:28 374
unityShader Demo之前看Shader入门精要时写的
2019-05-03
Unity5.6 编辑器拓展demo
2019-05-03
openGL配置环境新手教程,及所有需要的文件
2017-01-20
openGL环境配置-方法比较简单
2017-01-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人