- 博客(33)
- 收藏
- 关注
原创 关于“双指针法“的总结
笔者这些天终于达成了只狼的全成就,甚是欢喜。然而乐极生悲,最近做了些算法题,竟没有一道靠自己做出来。感觉算法题常常用到“双指针法”呢……为什么到现在我还是做不出来这些算法题……今天就来试着总结一下它的使用场景吧。
2025-08-16 17:02:35
779
原创 模 板 方 法 模 式
其实就像我隔壁那篇对比接口与抽象基类时那个敌人类一样,我们会根据需要将父类中希望子类实现的和希望使用默认实现的给区分开。正如同这里我希望子类可以选择重写NoMoreShotsNeed来判断是否被攻击,因为我们有的敌人可能拥有不被选中的天选体制!而扣除血量的方法我选择只能通过默认方法实现,因为这个关系核心机制的方法不可以随便改动。当然也可以使用abstract关键字来指定必须由子类实现的方法,实现特性统一。模板方法的思路就是这样,划分出固定的和可变的行为,再让子类自由发挥。
2025-08-06 22:17:59
301
原创 开发笔记 | 接口与抽象基类说明以及对象池的实现
最近笔者正在试图做一款塔防游戏的框架,如果说我们要实现子弹、敌人在生成时自带buff,类似于“元素抗性”效果,我们可以试着用装饰器来实现。
2025-08-06 22:11:23
409
原创 代 理 模 式
经常玩绝区零的朋友们都知道,作为传奇绳匠法厄同,我们往往不会亲自前往空洞,而是交给自身带有以太抗性的代理人执行探索任务,并且将相关数据同步给我们。代理模式(Proxy)便与其有着异曲同工之妙。在涉及服务器的网络游戏开发中,我们经常会用到代理模式。玩家游戏的数据在传递到服务器之前先经过代理,将暂时用不到的数据暂存,让资源想用在当前所需上,即延迟加载。代理模式的实现需要4个角色:1、,按照设计模式家族的祖宗之法,主题代表这逻辑主体,就是处理逻辑的地方。其为“代理”和“具体主题”的基类。2、
2025-08-03 00:20:25
435
原创 装 饰 器 模 式
装饰还是武器,都由我来定义。——柯莱塔·莫塔里只是突然想起台词,并非魔怔!正如同漂泊者被赠与的猫眼石一般,装饰品是独立于本体之外的事物。装饰器模式(Decorator)允许向一个现有的对象添加新的功能,同时又不改变其结构,只是作为附加物存在。
2025-08-02 22:20:09
424
原创 适 配 器 模 式
适配器模式是一种结构型模式,旨在解决不同接口间的不兼容问题。在一些情况下,我们可能需要一些老的代码接口放在新的环境,这时就可以考虑使用适配器模式了。适配器模式有以下三个角色:1、目标接口,即适配器类的统一接口,规范了每一个适配器的行为。也能够允许用户灵活切换适配器。2、适配者类,其实更像是“被适配者“,就是被适配器转换的主人公,相当于电源适配器转换的220V电源。3、适配器类,实际发生转换的地方,是目标接口的具体实现,即电源适配器本身。
2025-08-02 22:16:31
417
原创 AscendantPath | 实现视觉小说的人物对话系统(二)
在上一次中,并没有达到一个即插即用的效果,在github上我也只是发布为了“预发布版本”,所以这次就一口气制作完剩下的功能,正式发布第一个版本吧ᕕ(◠ڼ◠)ᕗ!
2025-07-31 22:37:18
1136
原创 开发笔记 | 实现人物立绘的差分效果
当这为了将人物的表情与动作更加贴近剧情,于情于理都不应该采用原来一个人物绑定一个立绘的方法。本篇文章将会实现人物立绘自定义的功能,来帮助实现人物立绘的差分效果。。
2025-07-28 23:45:05
451
原创 开发笔记 | 优化对话管理器脚本与对话语音的实现
上回书说到,我们的目前只是实现了基础的功能,而且这些脚本是想到什么写什么,结构没什么规律,在未来想要扩展可就麻烦了,所以这篇文章就来记录一下代码的优化吧!
2025-07-25 17:00:50
781
原创 Ascendant Path | 实现视觉小说的人物对话系统
终于是放假了,笔者也是趁着在家的时间赶紧努力推着几部galgame。这时我就在想,这一类文字冒险游戏在代码层面似乎只有这个对话系统花些功夫,如果我把这个对话系统做出来之后,岂不是可以量产galgame了?既然如此,那么今天,就从头开始实现人物对话系统吧!
2025-07-14 21:46:03
717
原创 桥 接 模 式
将抽象与实现部分分离,使它们都可以独立地变化。是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。对象的结构可以分为多个维度,而且每个维度需要能够独立变化和扩展。那么问题来了,何谓“抽象”与“实现”的分离呢?指隐藏复杂的内部细节,仅对外暴露必要的接口或功能的做法。C++中通常通过三种方式实现。就是包含纯虚函数的类,没有办法被实例化,仅仅定义接口。在C++里的接口就是通过纯虚函数类模拟的。通过私有域和保护域隐藏数据,公共域提供访问方法。
2025-05-31 18:58:28
942
原创 策 略 模 式
策略模式是一种行为型设计模式,其定义是:定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。这样一来,当一组类中互相的区别只有行为差异的时候,策略模式的作用就变得十分强大了。例如黑神话中不同的棍法切换后,武器没变、攻击目标没变等等都没有变,只有攻击方式等少数行为发生了改变,那么就把不同的攻击方式都拿出来封装在一个接口下,实现不同的具体类,这样就可以通过策略模式灵活切换攻击方式的算法了。
2025-05-12 20:06:28
470
原创 C++程序员的好习惯 ٩(๑˃̶͈̀ ᗨ ˂̶͈́)۶
最近正在读《C++Primer》这本编程经典,发现里面有许多值得我这种C++菜鸟学习的优化建议与良好习惯。那么这篇笔记,就将持续记录我关于C++日常学习以及实际开发中十分有用的各种好习惯,将它们罗列在这里,也方便查阅和自我监督。
2025-05-12 15:13:50
490
原创 观 察 者 模 式
观察者模式的实现可以分为四步(主题接口和具体主题可以放在一起,但分离后更有灵活性与扩展性):1、定义观察者接口:包含更新方法。即“暂停”更新方法与“继续”更新方法。2、创建具体观察者:观察者接口的具体实现,定义具体行为。比如UI系统在暂停时显现游戏菜单,继续时消失,音乐系统暂停时音乐停止播放,继续游戏后接着播放。3、定义主题接口:包括删除、添加、通知观察者的方法。就是通知游戏暂停和继续的接口。4、创建具体主题:实现通知接口,状态改变时通知观察者。
2025-05-02 10:19:13
494
原创 工 厂 模 式
冷知识,当我们需要使用平底锅时,我们并不需要知道平底锅是怎么造的,坏了只需要再买就好了。至于造平底锅,全部交给我们的生产工厂就好。蕴含这种创建对象思路的设计方法,我们称为“工厂模式”。
2025-05-01 17:41:15
1251
原创 单 例 模 式
单例模式是一种创建型模式,其定义是:确保一个类只有一个实例,其自行实例化向整个系统提供这个实例。单例模式的目的就是让全局都只有一个访问点,通过资源复用避免了重复分配资源,减少开销。这个模式可以用于游戏中多个模块共享数据,从而进行状态管理等。实现单例模式可以分为三步:1、通常将类的构造方法定义为私有。这是为了让这个类只能在一开始实例,杜绝在其他地方实例化的可能。2、定义私有类的静态实例。这个实例通常由静态指针来保存,因为静态成员与程序同周期,保证该实例能够被访问。3、提供公有的访问实例的静态方法。
2025-04-24 13:49:09
1109
原创 数据结构:哈希表 | C++中的set与map
上回说到,红黑树是提升了动态数据集中频繁插入或删除操作的性能。而哈希表(Hash Table),则是解决了传统数组或链表查找数据必须要遍历的缺点。
2025-04-12 22:31:34
1181
原创 数据结构:红黑树
为什么要以这个结构为题?那就要追溯到C++STL库中的两种map/set,分别基于红黑树与哈希表,我是根本分不清楚。为了搞清楚其区别,我会重点聊聊红黑树和哈希表。当然也会简单介绍一下树的结构。
2025-04-07 19:34:52
1176
原创 Unity2D:从零开始制作一款跑酷游戏!
大家小时候都玩过《天天酷跑》吧?这类游戏的原理很简单,非死即跑,主要用到的是2D卷轴技术。现在,我们一起来把经典复刻,从零开始做一款简单的跑酷类小游戏。
2025-04-03 21:36:12
1912
原创 数据结构:链表 (C++实现)
上次说到,具有线性结构的数据结构又被称为线性表(Linear list),再往下分,就是以数组为代表的连续存储线性表以及以链表为代表的链式存储线性表了。
2025-04-02 16:23:24
1281
原创 Unity:每单位像素(PPU)&每单位参考像素(RPPU) 详解
说来难受,为了搞懂UI中的一些组件,笔者花了一个半天的时间,搜罗了不下十篇讲解,才略懂了所谓的“Pixels Per Unit”,到现在都还有一阵昏昏欲死的感觉。这已经颠覆了我上个月从书中读来的给世界单位和PPU划等号的想法,趁现在脑子还有一丝清醒,就来总结一下对于PPU的理解吧。
2025-03-26 12:53:44
1397
原创 数据结构:数组与字符串(C++)
虽然笔者在去年修读过了数据结构的课程,但到现在却发现自己无论是理解深度还是使用场景都还只是一知半解。是时候重新彻底学习数据结构与算法这些大学基础知识了。
2025-03-24 20:22:32
942
原创 Unity2D:角色死亡重生逻辑与协程的使用
是时候编写脚本来控制角色的死亡重生了。在众多平台跳跃游戏中,我们不难看到有“地刺”一类的能够造成玩家即死的地形,这次我就来记录如何实现这一功能。话不多说,我们直接进入。
2025-03-22 18:18:56
1494
原创 [零散知识点] 编程范式 | C、C++、C#的区别 | 类与结构体
当一个类的成员是另一个类的对象时,先按成员声明的顺序逐个调用构造函数,再调用类自身的构造函数(因为自身的构造函数可能会用到成员对象)。属于面向过程的编程语言,提供了对内存或硬件的直接操作,语法简单,没有C++中的高级抽象特性,其标准库libc很小,仅包含基本的函数,所以对比其他语言开销更少,运行效率更高。在继承关系中,顺序是这样的:基类的构造函数——派生类的构造函数——派生类的析构函数——基类的析构函数。想想砍树,基类是树根,派生类是树干。类的默认访问权限是私有的,默认的继承方式也是私有的。
2025-03-20 18:07:13
929
原创 Unity2D常见问题:人物“绊脚”
在游戏开发中,物理引擎的碰撞检测是一个至关重要的环节,它直接影响到角色的运动表现和玩家的游戏体验。有一天,在编写好人物运动脚本后,我得意洋洋地开始运行,但是,为什么我的脚卡住了?这是由于两个Box Collider相互碰撞产生的,直角边缘在物理引擎中会可能导致计算上的不稳定性,从而使角色卡住。
2025-03-12 13:27:24
442
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人