自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 资源 (4)
  • 收藏
  • 关注

原创 使用阿里云一键部署 幻兽帕鲁服务器 菜鸟教程 一键快速部署

本文通过介绍如何 从购买阿里云服务器(windows系统)、到一键傻瓜式快速部署、再到连接到帕鲁服务器,简介明了,易上手,没相关专业知识的游戏玩家也能一键傻瓜式搭建服务器环境。

2024-02-07 22:03:58 1193

原创 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 2789

原创 U3D客户端框架(资源管理篇)之资源热更新管理器 ResourceManager

游戏或者软件内的 美术/脚本代码等资源 发生变化时,无需下载客户端重新进行安装,而是在应用程序启动的情况下,通过比对本地资源与CDN资源的MD5码,如果本地资源与CDN中的资源有差异,则优先使用CDN中的资源,以增量的方式进行下载更新这些变化了的 美术/脚本代码等资源。根据经验判断,每次强制用户换包将会造成 5%-15%+ 的用户流失,所以热更新对于商业价值来说是必要的。一个合格的产品采用热更新的方式更新资源是必要的。

2023-01-07 22:15:12 905 3

原创 U3D客户端框架(资源管理篇)之可寻址资源管理器 还在用难用的AssetBundle?快来使用新的可寻址资源系统AddressableManager,轻松玩转资源管理

AddressableManager 可寻址资源管理器系统它能够帮助解决游戏开发中最重要的一些挑战:高效率和轻松的内容管理。在管理游戏资源时,往往很难维持好的标准,从而避免让项目变得杂乱无章。最主要的问题在于不同职责的资源管理系统之间的耦合。而且,项目中资源的存储,加载和载入后资源的使用方法都有紧密的联系。假如,我们可能要在Resources文件夹存储某个精灵。这会让Unity在构建版本时,把精灵存到特定的存档文件中。由于精灵存在了这样的位置,我们必须通过Resources API来加载该精灵。

2023-01-07 17:47:32 494 2

原创 U3D客户端框架(资源管理篇)之资源加载管理器

资源加载管理器模块的主要职责就是资源加载的管理,从物理结构上对该模块进行了拆分成了一个单独的文件,资源加载管理器是加载器中偏底层的一个部分;资源加载管理器负责AssetBundle的加载、Asset资源的加载、资源加载完成后缓存进对预制池、卸载功能;

2023-01-07 16:16:33 553

原创 U3D客户端框架(资源管理篇)之主资源加载器模块设计实现

主资源加载器是为面向用户而设计的上层应用层类,用户使用主资源加载器作为文件加载器加载文件,加载器可以通过Assetbundle方式加载,Http方式加载资源。

2023-01-04 16:27:20 661

原创 U3D客户端框架(资源管理篇)之任务管理器模块设计实现

任务管理器的设计,类似于Handler类,为了同步或者异步加载时调用任务处理函数,是对执行某项任务(加载任务/下载任务/游戏内任务)在更新流程,完成流程,停止流程的一层封装,使用了状态模式。

2023-01-04 13:23:05 712

原创 U3D客户端框架(资源管理篇)之资产加载器 AssetLoaderRoutine

加载assetbundle内的资源。

2023-01-03 19:03:13 416 2

原创 U3D客户端框架(资源管理篇)之AssetBundle加载器

它是资源三大加载器之一,一个非常好用的AssetBundle加载器,也可以直接通过异步的资源加载函数直接加载资源,资源加载函数会自动去查找资源所在的AB包,自动加载AB,它支持多种加载方式,File模式加载、UnityWebRequest加载,AssetBundle方式加载(在Unity5.6以上版本,请不要使用WWW加载器,它会产生内存峰值)。支持加密AB包(只建议加密敏感资源,因为会影响性能)。同时它也绕开了Unity3D早期版本的一些bug,比如多个协程并发加载同一个资源,在android系统会出错。

2023-01-03 18:56:43 654

原创 U3D客户端框架(资源管理篇)之自动化打Assetbundle包管理器

我们使用的是自定义的Assetbundle资源打包器,没有使用unity自带的那个打标签的那种方式。因为使用自定义打包管理器方式有如下优点:1.对AssetBundle打包功能更方便拓展;2.可控性跟强一些;3.效率更高打包速度更快;文件夹是否为一个资源包:如果勾选一个文件打包成一个ab包;否则每个文件打包成一个ab包是否是初始资源:在文件。

2023-01-03 17:54:26 1208

原创 很好用的Unity编辑器扩展工具 Odin Inspector教程

Odin Inspector是Unity的一个插件,让您可以享受拥有强大,自定义和用户友好编辑器的所有工作流程优势,而无需编写任何自定义编辑器代码。Odin包含许多功能,例如Static Inspector,Project Validation,Odin Editor Windows和我们的开源Odin Serializer,它允许您在需要多态对象结构时扩展Unity的序列化功能,或者希望在运行时序列化和反序列化数据。

2022-12-30 12:14:17 1986 1

原创 U3D客户端框架(资源管理篇)之可写区资源管理器

顾名思义,可写区资源管理器就是对读写区文件访问API的封装,对检查可写区域资源的API的封装、资源版本记录作用、可写区资源信息的记录。

2022-12-30 11:59:39 639

原创 U3D客户端框架(资源管理篇)之只读区资源管理器

只读区资源管理器设计的主要目的就是以流的方式读取出只读区的资源。调用上层的callback函数,传出字节流数组给调用层。代码在设计上区分开了只读区和可写区的资源管理模块,因为这样符合职责单一的原则。这个比较简单没什么就是两个函数。

2022-12-30 00:14:16 381

原创 UML类图中 前缀符号 + - # ~ 的含义

UML类图中 前缀符号 + - # ~ 的含义 UML类图中有各种符号,新手看着一脸懵逼,今天我就来讲一下各个符号到底是啥意思。其实这些符号都是在描述类属性的可见性:UML中,可见性分为4级public 公用的用+ 前缀表示 ,该属性对所有类可见protected 受保护的:用 # 前缀表示,对该类的子孙可见private 私有的:用- 前缀表示,只对该类本身可见package 包的:用 ~ 前缀表示,只对同一包声明的其他类可见

2022-12-03 23:03:48 4445 3

原创 U3D客户端框架之支持断点续传的文件下载器实现方案

文件下载器是应用程序的基础模块,为应用程序与外部网络交互提供了必要的桥梁。该模块设计初衷是为了热更新过程中,下载CDN站点上的文件资源,所以下载器会验证 要下载的文件是否存在于CDN中。如果存在允许下载器继续工作;如果不存在会跳过本地下载。做这层检测是为了安全性考虑,不允许随意下载网络资源。如果有需求可以跳过这层检测。 下载文件时,不必重头开始下载,而是从上次中断的位置继续下载,这样的功能就叫做断点续传。 在下载文件的过程中,打断文件下载的原因有很多,比如网络不稳定,导致下载,中

2022-12-03 22:49:37 1473

原创 C++ 实现KMP字符串匹配算法

C++ 实现KMP字符串匹配算法 以前写的代码,先搬运到CSDN上来。先贴代码,后面补说明。

2022-12-02 15:56:44 508

原创 判断计算机是大端机还是小端机

这个是把以前写的代码先贴到CSDN上来,具体的后面说,先贴上代码!

2022-12-02 15:54:13 409

原创 C++代码 让CPU使用率变成波形

C++代码 让CPU使用率变成波形 这个只能是单核CPU,多核心CPU做不到这个效果,主要用到了Sin Cos函数,和Sleep函数做出的效果。上代码!

2022-12-02 15:47:46 463

原创 C++中使用 ofstream ifstream 写入读取文件

之前做表格增量编译的时候,每次需要把表格的数据读取进来。每次编译好之后需要把文件的Md5列表写到文件里。当时对ofstream ifstream 不熟悉,所以写了一个测试代码,亲测有效。

2022-12-02 15:41:01 1139

原创 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 1400 2

转载 [Unity Time系统知识] Time类

(只读)表示以秒计游戏开始的时间,固定时间以定期间隔更新(相当于fixedDeltaTime)直到达到time属性。(只读)不考虑timescale对时间修改的总时间,也就是程序实际运行时间。(只读)表示从上一帧到当前帧时间差值(不受TimeScale影响),返回实际时间差。(只读)表示从上一帧到当前帧时间差值(会受TimeScale影响),以秒为单位。(只读)表示一个平稳的deltaTime,根据前 N帧的时间加权平均的值。(只读)表示从程序运行的总时间,会随着游戏的暂停而停止计算。

2022-11-27 21:08:40 676 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 1617 7

原创 Unity3d中异形屏的适配

Unity3d中异形屏的适配。

2022-11-26 23:35:20 837

原创 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 567 1

原创 U3D客户端框架之日志写入器 把Log日志写入到可写区 方便调试

Unity3d 客户端 日志写入器 把Log日志写入到可写区 方便调试

2022-11-18 00:25:37 547

原创 U3D客户端框架之小堆顶高性能定时器测试10W计时器耗时1.9ms

a.添加时间复杂度为O(1);b.删除时间复杂度为O(1);c.执行一个定时器的时间复杂度为O(1); 之前写的服务器定时器是全部轮询更新,这种计时器性能太差,每一帧都要全部迭代一次,客户端层应该把CPU性能压榨到极致,能少循环的尽量少循环尽可能的减少CPU循环次数,所以优化了算法,使用了小堆顶定时器。小顶堆是基于二叉树的排序算法,将剩余时间最小的节点交换到树的根节点。每次更新的时候只取树的根节点,判断是否超时,如果超时会对树重新进行排序,排序完成后继续轮询,查询到根节点无超时为止。Timer

2022-11-17 00:06:24 683 2

原创 U3D客户端框架之基于类对象池的可回收变量代码实现

因为原先已经写过一篇文章了,里面已经写明白了类对象池是什么?具体特征是什么?优缺点都有什么?大家如果有兴趣可以点下面的文章去细看一下。如果懂原理直接看代码即可。

2022-11-15 23:56:24 349 1

原创 U3D客户端框架之类对象池技术优化C#语言GC

Unity3d框架搭建 使用 类对象池技术 优化 C#语言 GC

2022-11-15 23:05:28 669 1

原创 U3D客户端框架之商业项目中的 FSM 有限状态机 实现代码

有限状态机(Finite State Machine, FSM),又称有限状态自动机,简称状态机,是指在有限个状态之间按照一定规律转换的逻辑状态。

2022-11-08 00:22:56 987

原创 U3D客户端框架之 拓展StringBuilder实现InsertNoGC、IndexOf、LastIndexOf、ReplaceNoGC、AppendNoGC API 减少GC

StringBuilder拓展 实现InsertNoGC、IndexOf、LastIndexOf、ReplaceNoGC、AppendNoGC API 减少GC

2022-11-06 20:04:10 314

原创 浅谈比较C#中的char 和 C++中的char 之间的区别

经过以上的比对,其实可以得到一个结果,就是C#中的char对字符的表示范围是从 U+0000 -> U+ffff,也就是说 C# 中的char 其实就是 C++中的wchar_t类型,可以用于表示世界上大多数已知的语言。

2022-11-05 15:26:14 664

原创 U3D客户端框架之封装 DeviceUtil 获取设备唯一ID和设备型号

Unity3D 封装 DeviceUtil 获取设备唯一ID和设备型号

2022-11-02 23:59:44 2418

原创 分布式服务器框架之Servers.Core库实现 DES对称加密算法;SHA1信息摘要算法;MD5信息摘要算法

DES对称加密算法;SHA1信息摘要算法;MD5信息摘要算法

2022-10-19 12:02:06 331

原创 分布式服务器框架之Server.Core库中实现 XXTEA分组加密算法

XXTEA,又称Corrected Block TEA,又是XTEA的升级版 。目前XXTEA还暂未被破解。XXTEA加密算法比较复杂,如果要彻底理解得把引用链接里给出的公式吃透差不多才能理解,这里面又涉及密码学和数学的很多知识,读者实在看不懂也没关系,直接拿去用就行,知道怎么用就可以了。

2022-10-19 11:02:13 721

原创 分布式服务器框架之Servers.Core中 实现Log模块设计 写入MongoDB数据库

实现Log模块设计 写入MongoDB数据库游戏服务器中都需要用到Log模块,log模块存在的意义第一个是将log输出到控制台又或者是写入到log文件中,出了BUG方便定位;第二是常用于将用户的数据(例如玩家登录、道具购买量)将这种log统计到数据库中,方便统计用户留存信息、数据分析等。

2022-10-16 22:24:50 456

原创 分布式服务器框架之Server.Common库中实现 秒级定时器

定时器模块是服务器中的常用组件,本文带你实现一个具有基本功能的定时器模块要想设计一个定时器模块,一般包含两部分,一个是定时器对象(ServerTimer),另一个管理定时器对象的管理者(TimerManager)也叫定时器容器;定时器使用了C#内System库里面的Timer定时器作为定时器的主驱动

2022-10-15 16:31:46 365

原创 分布式服务器框架之Server.Core库中实现YFUniqueEntity、YFUniqueIDBase 管理MongoDB 自定义Id的自增

Server.Core库中实现YFUniqueEntity、YFUniqueIDBase 管理MongoDB 自定义Id的自增

2022-10-12 22:15:23 204

原创 分布式服务器框架之Servers.Core库中实现 MongoEntityBase 实现阻塞 异步对MongoDB的增删改查

Servers.Core库中实现 MongoEntityBase 实现阻塞 异步对MongoDB的增删改查

2022-10-12 22:08:16 285

原创 分布式服务器框架之Servers.Core库中实现MongoDB的ObjectId和Json转换

这个是个转换的工具类,主要目的是把C#中的ObjectId类转换成Json格式,Json抓换成Mongo的ObjectId,相当于是个序列化反序列化的过程。在以后的接收和发送数据的时候需要用到。

2022-10-12 21:58:57 329

原创 分布式服务器框架之Servers.Core库中实现MongoDB对象实体类 管理对象ID

Servers.Core库中实现MongoDB对象实体类 管理对象ID

2022-10-12 21:55:28 343

unityShader Demo之前看Shader入门精要时写的

刚学shader的时候写的练习代码。希望可以帮到大家。主要有实现了以下几种效果: 高光、漫反射、纹理贴图、法线贴图。 刚学习shader的同学可以下了研究研究。

2019-05-03

Unity5.6 编辑器拓展demo

学习unity编辑器拓展的时候做的一个demo: 1.对脚本组件的拓展,对某个变量的编辑器拓展。 2.使用Wizard创建窗口实现了批量修改选择的GameObject。 3. 创建了Editor Window,使用自定义窗口创建对象。

2019-05-03

openGL配置环境新手教程,及所有需要的文件

这个文档包括: 1.适合新手的openGL环境配置文件及方法(方法和文件通用),主要针对蓝皮书5版出的,我用的是VS2015的编译器,网上大多数的方法要把乱七八糟的文件放来放去 的,大多数是放到C:的programx86目录,或者是VS安装目录的include的文件,并不适合新手上手,容易弄错,此教程简洁易学。 2..里面有一个TXT教学文档,和所有要用的dll,lib文件和.h文件,还有freeglut文件,和GLTools工具包文件,里面资料整齐,是我花了很多时间在网上找出来的。又结合了许多失败的经验所以整理出来了这个简单易学的教程。

2017-01-20

openGL环境配置-方法比较简单

本教程适合新手和openGL蓝皮书的环境配置,网上大多数的方法要把乱七八糟的文件放来放去 的,大多数是放到C:的programx86目录,或者是VS安装目录的include的文件,并不适合新手上手,容易弄错,此教程简洁易学。是我经过很过失败经验整理出来的。

2017-01-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除