- 博客(7)
- 资源 (1)
- 收藏
- 关注
原创 命令系统:事件系统的对立面
事件系统:适用于动态触发的逻辑,这么说虽然不太准确.比如任务条件的监听.有任务是击杀指定的怪物.就可以监听击杀怪物的事件,然后在执行事件时判断一下是否为需要的怪物ID即可.发送事件者本身不知道谁会去响应这个事件,而即便真的想要去找到这个事件也非常难,因为任何地方都可能会需要知道这个怪物击杀的消息,比如人物身上的装备是击杀怪物后可以增加一些属性,成就系统里面需要累计击杀怪物数量等等.很多人所说的命令系统是一种只包含数据的,可以被存储的,且可以回退的.虽然我不知道这样有什么用.
2025-03-17 23:21:57
408
原创 修复一次极其诡异的输入系统代码逻辑bug
简单解释就是,每帧都检测一下这个触点下有哪些悬停的窗口,无论窗口是否被其他窗口覆盖.然后对于在新列表而不在旧列表中的窗口就执行onMouseEnter,对于在旧列表而不在新列表中的窗口就执行onMouseLeave.最后保存一下这一帧的悬停窗口列表,以便下一帧使用.但是却没有显示属性.虽然先判断离开还是先判断进入,本质上并没有逻辑上的错误.而应用层对此的解决方案也可以改成判断离开的是否就是当前显示的物品属性来决定是否要隐藏.但是如果逻辑能够更加通顺一些,用起来的暗坑更少一些,自然是一件非常好的事情.
2025-03-09 23:28:02
1816
原创 C++高性能对象池设计
在性能优化的话题中,对象池总是一个会被提及的设计.那到底什么是对象池?简单来说就是用完以后别销毁,下次要用的时候重复利用.那如果不用对象池,是什么样的?以C++为例.当创建一个对象时,使用new运算符在堆上创建了一个类对象.在用完以后使用delete进行释放内存.因为会涉及到堆内存的申请,效率在某些时候可能会不是那么高.而且还有另外一个问题.一旦涉及到内存的创建和销毁,就会有内存错误的隐患.比如常见的重复释放,释放错误的内存地址等.而对象池就正好能够解决上面这些问题.
2025-03-03 14:46:45
1993
原创 为什么需要重新设计C++事件系统?
任务条件监听.任务条件往往都是各种各样的,种类非常多.而不可能在每一个地方都去写一次任务条件的检查.所以最好的办法就是监听指定的事件.因为不同的条件对象监听的事件类型也不一样.要是硬编码,就要在每一个可能触发条件进度改变的地方去查询到底哪个条件需要更新.效率非常低下,而且写起来也非常痛苦.角色buff.有些角色buff是带有一些条件的.其实也跟任务条件类似,就是种类太多了,而不同的种类可能就会监听不同的事件.要是使用命令硬编码,童颜需要查询大量的对象,特别耗费性能.
2025-03-02 01:08:31
751
原创 突破C++继承限制:打造安全的base和This类型系统
但是C++本身没有提供这个base关键字,C++中要想调用基类的虚函数时就只写基类的名字去调用,比如B::virtualfunc().有时候基类名改了,或者复制了当前类的代码,改成新的类,这种地方就容易遗漏,从而产生一些奇怪的错误.写起来也非常麻烦,每个类都需要使用自己基类的名字来调用,而不是统一的名字.熟悉C#的人知道C#中有一个base关键字,表示当前类的基类,比如调用基类的虚函数时,就会使用base.virtualfunc().非常好用,使用统一的书写方式避免了很多可能由于粗心而带来的错误.
2025-02-26 23:55:17
297
原创 「性能革命」从堆到栈:C++游戏字符串优化全攻略 20倍提升(附性能对比)
很多人使用字符串时,会直接使用标准库提供的string,但是string使用的是堆内存,无论申请还是释放还是造成内存碎片,都会对性能有比较大的影响.所以如果能使用栈内存来代替会有较大的性能提升.大多数使用字符串的时候都是已经知晓字符串最大的长度为多少,所以就可以使用栈内存的字符串来代替string.可以根据自己的需求封装函数,使其达到string的易用性.
2025-02-23 15:59:30
256
原创 C++宏编程终极指南:安全生成唯一变量名
通过以上代码就可以使用UNIQUE_IDENTIFIER()宏来根据代码所在的行号生成一个唯一的变量名,这在大多数宏里面都非常好用.以我的代码为例.我将简单的for循环写成了宏。有些时候在宏里面我们会写一些临时变量,但是由于宏里面直接写临时变量在多次使用宏时会提示定义了重复变量,这时候就想有没有办法能够让宏自动生成不重复的临时变量呢,确实可以!为什么只有那样写才能够先替换行号再替换文本拼接呢,这跟宏展开的规则有关.MAKE_LABEL1->传递已展开的__LINE__宏展开顺序为深度优先,从左到右.
2025-02-23 15:58:16
390
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅