- 博客(78)
- 资源 (10)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 ScrollCircleMaker v1.0使用教程
前言ScrollCircleMaker v1.0是博主近期开发的循环复用的插件,使用它可以很快速的为游戏添加上滑动功能,并且跳出物品数量的约束,比如游戏背包可能存在上千上万的道具,聊天模块的滑动等等,它可以解决一切滑动需求,有单行不规则长度辅助器、多行规则长度辅助器、自定义位置辅助器的存在,只需仅仅几行代码即可,接下来就阐述插件使用教程和注意事项。1. 如何快速上手?使用ScrollCircleMaker v1.0只需要关心数据装载和单个物品的更新逻辑,并且为了尽可能简化插件的使用过程,博主
2020-07-30 10:54:17
1073
8
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Gameframework合集(持续更新)
Gameframework一共有18个模块,可以提高游戏开发进度和质量,这里将对18个模块慢慢的解读和分享出一些心得,文章类型会分成三个类型(原理,实战,扩展),一个模块最多可能有N篇文章,最少两篇(原理,实战)。1.UI模块ui模块初探->https://blog.csdn.net/m0_37920739/article/details/104089605ui模块进阶->...
2020-03-10 20:55:24
2711
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 设计模式总结(以游戏开发举例)
1.单例模式单例模式有两个模式,确保任何时候对象只有一个,避免重复创建和释放,应用于资源共享和相互通信的情况下。https://blog.csdn.net/m0_37920739/article/details/808696492.工厂模式、工厂方法工厂模式把创建对象集中,使矛盾集中在工厂类中,导致工厂类会高耦合。工厂方法是类创建单独创建它的工厂类,符合开闭原则。https...
2020-03-02 10:35:25
398
原创 Gameframework(Network初探篇)
前言初探篇主要讲解Socket基础知识,和Gameframework框架是如何实现tcp的,然后对接ETServer进行网络模块的测试,后面的高阶篇会将网络模块搬到上层(Unity)实现,然后添加Kcp、Web通信进行网络模块的测试和讲解,最后就是Proto选择和原理分析,还有协议工具开发。1.Network模块的常用API优秀的程序员必要的掌握的技能:算法、框架、网络,我说的...(小声bb:虽然这三个我也不会),接下来学习框架这么实现网络模块的,首先给出常用的接口表格:网络模块 .
2020-11-29 17:04:57
2624
3
原创 Gameframework(Config进阶篇)
1.Config模块的常用API正常来说优秀的游戏都必须支持高度的可配性,这样也就离不开GF框架的Config模块,接下来会给出Conifg模块的常用接口表格。ReadData 加载配置文件资源。 ParseData 解析配置文件内容。 HasConfig 是否存在配置项。 GetBool 通过指定配置项读取布尔值。 GetInt 通过指定配置项读取整数值。 GetFloat 通过指定配置项读取浮点数。 GetString 通过指定配
2020-11-28 20:04:51
1419
原创 CSharp特性详解
前言CSharp的特性(Attribute)是比较难以理解的技术,写代码时通常都要求写注释,为了是让其他程序猿快速理解代码含义,但是注释是写给'人'看的,突发奇想下:能不能写出给C#编译器看的注释,比如在某些代码段上打上标记,让编译器看到标记后,做出不同的运行效果?其实…这就是特性。1.Serializable特性分析为什么Serializable特性作为小节1讲解呢?因为它是比较常见的特性,在网络对象进行传输时和数据库进行对象保存时,使用序列化特性后的类、结构体、枚举等等都可实现序列化操作
2020-08-23 12:19:13
3415
原创 编码解码和协议分析
前言计算器显示的字符最终存在内存里都是以二进制码形式的,最开始的计算机字符用ASCII编码去存储,ASCII编码只能表现256个字符,但是经过计算机不断发展,编码方式越来越多,于是编程时就需要注意不同环境的编码格式,防止乱码…1.编码发展史开始计算机只在美国用。八位的字节可组合出256(2的8次方)种不同的状态。把其中编号从0开始的32种状态分别规定了特殊的用途,又把所有的空格、标点符号、数字、大小写字母分别用连续的字节状态表示,一直编到了第127号,计算机就可以用不同字节来存储英语了。于是
2020-08-23 12:17:41
1153
原创 Unity的Dots技术入门
前言看过Dots技术宣传片,当时确实被震惊到了,脑袋里闪过一句话:时代变了!大人。DOTS是Data-Oriented Technology Stack(数据导向的技术栈):借助Unity全新高性能多线程式数据导向型技术堆栈(DOTS),充分利用当今的多核处理器。游戏的运行速度会变得更快。1.Unity的Dots由来这种技术在游戏领域最先成功的案例来自守望先锋,各位可以去看看《守望先锋》架构设计与网络同步,ECS全称是Entity Component System,即实体、组件和系统。实
2020-08-23 12:13:22
6531
8
原创 ETServer开发环境
前言ET偏向服务器端框架,可自行查看框架简介,了解框架具体有多强大,简单说明部署ET框架的步骤。1.开发环境准备博主使用5.0版本的,所以讲述下5.0版本预先要准备好的环境,打开Visual Studio Installer如下图进行操作:以上就是C#开发环境的准备。2.安装MongoDB网上随便找个MongoDB安装包,按照正常流程安装即可,之后使用命令行启动数据库:mongod -dbpath F:\MongoDB\Server\4.4\data将执行命令
2020-08-23 12:11:40
761
原创 游戏中的数学
1.游戏中的矢量矢量的加减公式:a+b=(a₁+b₁,a₂+b₂,a₃+b₃)a-b=(a₁-b₁,a₂-b₂,a₃+b₃)示意图:作用:游戏中可用于计算玩家a到怪物b的位移。矢量的点积公式:a.b=(a₁,a₂,a₃).(b₁,b₂,b₃)=a₁b₁+a₂b₂+a₃b₃a.b=|a||b|cosθ示意图:作用:由结果而言,a.b就是a在b方向上的投影,...
2020-04-06 18:38:53
901
原创 什么是DrawCall?
前言游戏开发圈里的人一定听过优化游戏要降低DrawCall,这样到底什么是DrawCall呢?Unity中应该如何降低DrawCall,这里就来讲解一下关于DrawCall知识点。1.是谁拖了后腿?通俗的来说就是Cpu:(#`O′)喂你好,是Gpu吗?快点醒醒我这里又有画画的任务了(Cpu调用Gpu的次数),打一个比方比如上传很多文件到百度云或其他地方时,都会把它压缩到一个文件夹里...
2020-04-06 18:37:22
11813
1
原创 XLua开发环境搭建
前言xlua是腾讯给出的热更新方案,已经有很多成功的案例了,这里把xlua工程下载过来,成功执行到hello world表示对xlua环境搭建成功,毕竟学习一门技术或语言都是从hello world开始的,虽然环境搭建下载过来即可,没有任何的坑。1.下载Xlua工程到这里对xlua进行下载,建议选择xlua_lua5.3 or Higher版本的工程,以后所有关于xlua热更新方案...
2020-04-06 18:28:35
483
原创 Gameframework(Config初探篇)
前言听过游戏数值策划岗位的,都知道他们是为了游戏数值的平衡和制定,游戏中各种公式的设计,以及整个系统平衡的搭建。当然策划可以不必懂编程或需要编程,但配置信息程序猿是不需要干涉的,所以游戏需要可配置的(为了热更新、程序便于维护和分工明确),思考一下如果直接把数值写死在代码中感觉好傻的(别的不说了,策划每次要改数值,还要告诉程序去改),程序和数值分开是很好的习惯,接下来看看GF框架的配置模块做了...
2020-04-06 18:10:14
1420
原创 Gameframework架构思路
前言这里GF就是Gameframework框架,俗话说的好不想懂底层代码的程序猿,不是好程序猿(那里来的俗话,我也不知道...),Unity引擎如何搭建的,不懂倒是没有关系,毕竟代码没有开源(就算开源了,我也不会去读的,毕竟在下智商有限),但是GF代码是个人设计基于Unity的框架,你用着封装好的十八大金刚,敲着简单的代码,良心不会痛嘛,而且万一想要往框架封装新模块,@作者去添加模块也不太好...
2020-03-15 20:19:00
2666
7
原创 Gameframework(Object Pool初探篇)
前言对象池和引用池的功能是一样的,也是为了防止反复销毁和创建,偏向于游戏实例中的使用,添加了事件和更新机制 。引用池是偏向代码中反复用到的对象,比如各种任务,事件参数,各种模块信息。1.对象池的使用对象池慢慢吞吞看了挺多天的,终于慢慢理解了作者当时设计框架时为什么要这样去架构,所以现在和大...
2020-03-14 21:48:19
1238
5
原创 Gameframework(Reference Pool初探篇)
前言可能刚学编程的会不知道引用类型和值类型是什么意思?导致可能会不明白框架给出的引用池到底是什么用来干嘛的,为什么创建对象时调用引用池给出的接口Acquire函数,会对游戏性能有所优化。1.值类型和引用类型区别...
2020-03-11 00:47:31
848
原创 Gameframework(Procedure进阶篇)
前言在流程初探篇里答应过各位给流程模块加个锁,好处已经在初探里已经说明了,因为流程释放跳转确实应该封装到流程管理器里,而且不需要额外声明变量去处理。1.流程深层原理初探篇里已经和各位简单说明了,每个流程的生命周期和使用方式,但是详细原理没有和各位介绍清楚,这里就把各位安排的明明白白,...
2020-03-10 15:24:28
1036
原创 Gameframework(Event初探篇)
前言Gameframework的事件模块理解还是比较难的,但是写的真的很棒(๑•̀ㅂ•́)و✧,详细品读一天了,现在准备和大家分享一下,事件模块到底如何写比较好。1.正常的事件模块要知道Gameframework的事件模块到底哪里好,这里先按照正常思路尝试去设计一个事件模块,首先模拟出一个场景需要用到事件触发机制,就用网络消息分拨的场景作为例子,具体代码如下: pub...
2020-03-08 02:02:32
2399
6
原创 Unity检视面板重构(OnInspectorGUI重写)
前言使用Gameframework框架时,有没有发现很神奇的情况,继承脚本任何模板的辅助器基类(Helper)都会自动识别,并且在模块组件属性界面下自动刷新生成枚举,这里就来讲述一下Gameframework是如何做到的。1.自动识别脚本如果不知道Gameframework是何物的,也不影响这篇文章的观看,这里先讲述一下具体的功能是什么,按照本地化模块为例,分析Gameframew...
2020-03-05 21:57:37
7476
原创 Gameframework(Localization初探篇)
前言此模块是用于语言本地化的,可以让开发出的游戏更加的国际化,接下就来看一下Gameframework是如何实现语言切换的。1. 本地化的原理
2020-03-03 20:06:25
1384
1
原创 Gameframework(Procedure初探篇)
前言流程是Gameframework里的一种概念,刚刚使用这个框架时各位可能比较晕,其实是继承了有限状态机类,为游戏提供状态切换的模块,用到的设计模式是状态模式。1.流程的原理建议没有看过状态模式的诸位,先去看看状态模式到底是什么?具体的传送门如下:...
2020-03-02 16:18:01
1048
1
原创 Unity中使用MVC模式
前言MVC模式是视图层、控制层、模型层代码进行分层开发,视图层只关心UI的变化,控制层获取模型对象,并在数据变化时更新视图,启到统一作用,模型层是获取和更新数据模型的,这样就不必将所有逻辑代码集中一起,看着比较混乱。1.Unity开发时使用MVC正常情况每个UI界面对应一个脚本,把逻辑全部写在一起,这样的话太过臃肿,在Unity开发时可以使用MVC模式去设计游戏框架,这样的话,每个...
2020-02-29 02:52:59
930
2
原创 访问者模式
前言如果数据是稳定不变的,但访问数据的方式可能易变的或需扩展的。可以使用访问者模式,主要是为了对象数据和访问数据方式分离开来。1.游戏分享链接有一天游戏策划跑过来和你说:嘿,伙计,把游戏的添加上分享功能模块吧,毕竟最好的推广方式是玩家与玩家之间的。把游戏活动分享到微信,需要先接入微信提供的工具开发包,然后敲一下代码调用即可,具体代码如下: public enum Sha...
2020-02-28 18:11:48
120
原创 模板方法模式
前言模板方法模式和空对象模式刚刚相反,是经常使用的模式,可能经常用到也不知道它原来叫模板模式。1. 什么是模板方法模式?这篇就当水文章了,实在想不到这个经常使用到的设计模式,我可以写出什么花里胡哨的东西,而且使用的地方也太多了,写这篇主要是为了完成九九八十一难的其中一难,毕竟其他设计模式都写好了。模板方法是什么?随便找个之前写过的设计模式文章里基本都隐藏的模板方法模式,主要是封装不...
2020-02-27 22:41:17
167
原创 策略模式
前言不知道各位有没有玩过三国杀,这里将用策略模式去模拟三国杀游戏,各位看完一定会感觉很生动形象的????,之后就是比较策略模式,状态模式,桥接模式什么同异。1.策略模式模拟三国杀手牌大部分功能相似的情况下(功能相同的情况下,调用函数时的参数也要相同),使用分支语言将带来复杂和难以维护的问题,所以每个玩家手里一堆牌,可以用策略模式相当于目标对象持有很多个策略类,只不过网上给出的例子都是目标...
2020-02-27 20:35:05
204
原创 状态模式
前言当类属性的某个属性发生改变时允许改变其内部的行为,导致对象看起来像修改了它的类。1.Unity的动画状态机没有用过Unity动画状态机的小伙伴,这里先简单的讲解一下,就是可以通过可视化界面设置每个动画状态之间跳转的关系,可能用过的人感觉好神奇,但是Unity又不是开源,所以这里就尝试实现一下Untiy动画状态机模块,先给你们看看动画状态机的配置界面吧,让各位混个脸熟,具体如图所...
2020-02-26 23:36:53
426
原创 空对象模式
前言空对象模式基本上用到的很少,空对象去取代Null,主要目的是当数据不可用时提供一种默认的处理方式。1.不用空对象模式处理意外情况一般空对象模式是防止意外情况,导致无法获取到对象情况下可以触发默认方式。说实话感觉这个设计模式的使用场景很少很少,但是还是简单的讲解一下,首先模拟一个会用到空对象模式的场景,具体代码如下: public enum SDKType {...
2020-02-26 19:24:33
289
原创 观察者模式
前言这篇文章将讲述消息监听方案的发展史,来阐述观察者模式的优点。本篇文章的故事纯属虚构,如有雷同只是巧合,前排拿好瓜子和板凳准备开始了。1.很久以前的消息监听方案记得很久很久以前,一群程序员准备构建游戏网络模块的框架时,思考了良久,他们终于决定准备把全部监听消息的操作都集中在SocketManger类里,相当于使用中介者模式去实现消息分拨的功能,然后他们满意的点点头开始写代码了,...
2020-02-25 23:27:45
316
原创 备忘录模式
前言不知诸君有没有看过我写的命令模式实现的操作前进和回滚的效果,其实备忘录的主要目的也是这个,但是实现的方式不同,这里将讲解一下这两种方式的区别。1.备忘录实现回滚和前进没有看过命令模式实现操作前进和回滚的,建议去看看,传送门:https://blog.csdn.net/m0_37920739/article/details/104428753 看完以后,有看过其他网站写的备...
2020-02-25 17:39:15
235
原创 中介者模式
前言当看到一个类有很多复杂的对象引用和相互调用的时候,导致代码变得很乱,这个时候就可以使用中介者模式去解决这个问题,比较典型的例子就是MVC。1.简单说明中介者模式中介者模式主要是解决对象之间相互引用和调用,导致结构很混乱很复杂。比如游戏引擎模块之间的相互关系,一定是有超级复杂的相互关联的问题,这里使用中介者模式来模拟一下解决游戏UI模块和Sound模块复杂的关系,通过这个设计模式...
2020-02-24 22:25:38
171
原创 迭代器模式
前言C#中数据结构都实现了迭代器的功能,具体是如何实现的,接下来就由此篇文章去介绍一下C#是如何实现迭代器的,从使用C#自身提供的接口再到从0到1架构出迭代器。1.使用C#接口实现迭代器随便找一个用C#实现的数据结构,比如看看列表是如何实现的迭代器功能的,其实网上资料说要实现迭代器,C#已经给出了2个接口,一个是IEumerator还有一个是IEnumerable。来看看List...
2020-02-24 18:26:23
285
1
原创 解释器模式
前言在游戏中需要生成json的存档文件时(比如游戏中音效大小的存储),就可以使用解释器模式来生成此文件,解释器就相当于翻译员,接下来实现对象和Json相互的功能。1.实现Json解释器对象转换json格式的字符串,需要知道json格式的字符串到底何样,经过查阅资料,感觉介绍的细腻和清晰的就是一下网站:https://www.cnblogs.com/abella/p/11125...
2020-02-24 00:09:02
165
原创 命令模式
前言命令模式可以实现操作的前进和回滚,比如经常使用Photoshop的用户就知道它就可以对操作前进和回滚,主要是记录每一个操作节点来实现的。1.实现操作节点模块其实挺多关于设计方面的软件都需要有后退和前进的功能,要实现这个功能就需要把每一个动作都存下来,这个时候命令模式就出现了,将对软件每一个操作都可封装成对象然后保存到列表里,就可以实现动作的可控,就像幻灯片可以步步前进或者后退...
2020-02-22 23:54:00
215
原创 责任链模式
前言不知道各位大家有没有看过我写的过滤器模式,这篇文章主要是用责任链模式去重构之前文章中组合过滤器实现的方式,来讲解责任链模式的优点。1.之前过滤器的缺点建议没有看过我之前实现如何组合过滤器的人去看一下,主要去关注一下ToMergeFilter函数是如何实现的,传送门链接:https://blog.csdn.net/m0_37920739/article/details/10...
2020-02-21 03:05:58
204
原创 代理模式
前言代理模式主要是用来对目标对象访问权限的控制,比如游戏商城里购买道具时,通过代理类去判断玩家是否可以执行购买操作,然后比较与装饰器的区别。1.静态代理模式详解代理模式根本不管持有的目标对象原方法做了什么,它只关心用户是否有权限访问目标对象的方法,代理类相当于一个安全层,如果在目标对象添加安全判断,这样的话代码就比较耦合,而且权限和安全逻辑的代码本来就不和目标对象的功能根本没有任...
2020-02-20 23:53:05
176
原创 享元模式
前言看到享元设计模式,想到了在工作时写的地图编辑器优化方式就可以使用此模式,享元模式主要减少创建对象的数量,以减少内存占用,简直优化游戏内存利器啊。1. 一般地图渲染方式一般2D地图都是使用二维数组去表示的,数组里面存着结构体,结构体里的字段可能碰撞信息,图片信息等等,一般地图资源的情况,我们用代码模拟一下即可,具体代码如下: public enum Collision...
2020-02-20 01:04:09
346
原创 外观模式
前言外观模式就相当于一个接待员,比如去餐厅吃饭时,服务员首先会给你菜单让你点菜,给你端茶递菜,然后清理桌子。这些都是服务员去做的,我们只需要享受他们提供的服务即可,不用亲自上阵。1.外观模式详解手游启动的时候,会有一大堆准备动作,首先会检查资源和代码是否需要热更新,步骤二如果需要热更新就远程获取新的资源与本地的资源进行替换,步骤三初始化游戏各个模块的管理器和接入游戏的SDK,步骤...
2020-02-19 23:05:06
191
原创 装饰器模式
前言装饰器模式可以让我们实现动态地给一个对象添加一些额外的职责,增加新的功能。然后思考一下和对象适配器的模式到底存在那些区别。1.装饰器的使用在蜘蛛侠的电影中,我们可以看到主角本来是一个普通人,当时被蜘蛛咬了以后,再加上他自己设计的道具,经过一番的装饰主角就变成了蜘蛛侠,我们可以用代码来模拟一下这个事情,首先定义普通人类,具体代码如下:namespace AdapterPat...
2020-02-19 18:53:50
144
原创 组合模式
前言组合模式称为整体部分模式,主要是表现对象层次具备整体和部分,呈树形结构,且要求具备统一行为。1.架构引擎时的组合模式架构游戏引擎是离不开组合模式的,这里以Unity为例子,用组合模式简单表达一下如何架构出游戏引擎,首先我们定义出抽象组件类,组件类里应该有位置和锚点等等,具体代码如下: public static class Global { ...
2020-02-19 17:19:15
149
ExeclReader.unitypackage
2020-04-13
Unity-Technologies-2019.6.7.zip
2020-03-05
AutoMvcBuilder.unitypackage
2020-02-29
AssetBundleBrowser.unitypackage
2019-09-29
Simple LOD v1.5.unitypackage
2019-08-23
ScollCircleDemo.unitypackage
2019-05-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人