自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 记一次centos合并excel,word,png,pdf为一个整体pdf的入坑爬坑过程(一直显示宋体问题)。

php:7.4pypdf (python的包)二、入坑关键libreoffice 是直接通过 yum install libreoffice 安装的缺少对中文的支持Fpdi对中文支持不友好,手动改了其他博主说的中文支持的改进,年久之后不知道如何升级版本在执行 libreoffice 进行生成pdf时 缺少 --language=zh-CN 这个关键参数(主要是原先不了解libreoffice 有专门的语言包)

2024-04-13 16:23:06 1113 1

原创 wondows10用Electron打包threejs的项目记录

window10node: 18.18.2yarn: 1.22.21nrm: 1.2.6electron: 23.3.13到 Releases · coreybutler/nvm-windows · GitHub下载 nvm-setup 并安装 在cmd中安装node版本选择 tencent (因为作者在当时使用taobao云时,有个依赖一直超时,选择tencent后,可以了)或者你不知道23版本哪个最新 我们新建一个 main.js 拷贝官方的代码2、修改 package.json (加入一

2024-02-22 12:27:59 1453

原创 用23种设计模式打造一个cocos creator的游戏框架----(二十三)中介者模式

联机开发就不一样了,一般情况下我们的命令需要到服务器端走一下,和其他玩家的命令一起排个队再回来。联机:本地指令发送--->上报服务器--->服务指令接受--->本地指令执行。单机:本地指令发送--->中介者发送(指令来自本地)--->本地指令接受执行。1、本地指令发送--->中介者发送(指令来自本地)--->服务端指令接受执行。2、服务指令发送--->中介者发送(指令来自服务)--->本地指令接受执行。意图:用一个中介对象来封装一系列的(业务指令)对象交互。单机:本地指令发送--->本地指令执行。

2023-12-21 21:34:43 874

原创 用23种设计模式打造一个cocos creator的游戏框架----(二十二)原型模式

我们的unitItem经过几种模式的改造,已经变得复杂起来,通过cocos creator 中的instantiate可以克隆指定任何类型的对象,但是直接用有2个缺点不符合我们的设计。4、当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们,可能比每次用合适的状态手工实例化该类更方便一些。意图:用原型实例指定创建对象的种类,并且通过复制(clone)创建新的对象。模式意图:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。

2023-12-20 21:58:47 789

原创 用23种设计模式打造一个cocos creator的游戏框架----(二十一)组合模式

模式意图:将对象组合成树型结构以表示“部分-整体”的层次结构。Composite 使得用户对单个对象和组合对象的使用具有一致性。组合模式可以与命令模式结合使用,实现单命令,命令组,命令组内套命令组的功能。这样多一些常用的命令组,只需一个命令表达式就搞定了。修改上次用过的解析器模式的上下文,新增commandId == 'attackgroup'2、希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。意图:将对象(命令)组合成树型结构以表示“部分-整体”的层次结构。

2023-12-19 22:58:04 839

原创 用23种设计模式打造一个cocos creator的游戏框架----(二十)解析器模式

这里假设我们希望以文本的方式记录游戏命令过程比如:[unitItem001]{attack}[unitItem002] ,类似这种的格式,然后通过解析器解析成实际的命令。最高效的解释器通常不是通过直接解释语法分析树实现的,而是首先将它们转换成另一种形式。意图:给定一个语言(命令备忘录语言),定义它的文法的一种表示(命令+[对象]+[对象]),并定义一个解释器,这个解释器使用该表示来解释语言中的句子。模式意图:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

2023-12-18 23:17:34 689

原创 用23种设计模式打造一个cocos creator的游戏框架----(十九)备忘录模式

意图:在不破坏封装性的前提下捕获一个对象(GameModel)的内部状态,并在对象(GameModel)之外保存这个状态。模式意图:在不破坏封装性的前提下捕获一个对象的内部状态,并在对象之外保存这个状态。假设通过保存备份按钮对当前的游戏进行备份,如果后面失败了,通过读取备份,从刚才备份的位置重新开始。2、如果一个用接口来让其他对象直接得到这些状态,将会暴露对象的实现细节并破坏对象的封装性。1、必须保存一个对象在某一个时刻的(部分) 状态,这样以后需要时它才能恢复到先前的状态。模式名称:备忘录模式。

2023-12-17 20:09:06 723

原创 用23种设计模式打造一个cocos creator的游戏框架----(十八)责任链模式

将一次请技能释放求通过一串责任(命令)链接起来,不同责任(命令)做出不同的技能释放命令。有小于10个大于5个敌对单位时,ai单位释放中技能,有10个以上敌对单位时,ai单位释放大技能。意图:使多个对象(命令)都有机会处理(技能释放)请求,从而避免(技能释放)请求的发送者和接收者之间的耦合关系。将这些对象(命令)连成一条链,并沿着这条链传递该(技能释放)请求,直到有一个对象(命令)处理它为止。模式意图:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。小技能,中技能,大技能。

2023-12-16 21:40:54 586

原创 用23种设计模式打造一个cocos creator的游戏框架----(十七)命令模式

Command 的 Execute 操作可在实施操作前将状态存储起来,在取消操作时这个状态用来消除该操作的影响。如果一个请求的接收者可用一种与地址空间无关的方式表达,那么就可以将负责该请求的命令对象传递给另一个不同的进程并在那儿实现该请求。意图:将一个请求(命令)封装为一个对象,统一成execute执行,对请求(命令)排队或记录请求(命令)日志,以及支持可撤销的操作。模式意图:将一个请求封装为一个对象,从而使得可以用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可撤销的操作。

2023-12-15 20:16:43 630

原创 用23种设计模式打造一个cocos creator的游戏框架----(十六)享元模式

前面在访问者模式中,我们简单设计了一个伤害系统,但是每次创建伤害访问者时都需要new一个,比如一次单体普通攻击:new MonomerAttackVisitor(100),但伤害事件在游戏中是大量存在,每次都new一个肯定是不友好的。享元模式和对象池模式有点像,但是有差别,对象池模式在我们前面提到的抽象工厂中,有提到部分代码,对象池模式一般有回收这个动作,回收对象一般会通过reset方法进行重置。4、如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象。3、对象的大多数状态都可变为外部状态。

2023-12-14 14:17:40 623

原创 用23种设计模式打造一个cocos creator的游戏框架----(十五)策略模式

策略模式是直接引用实现类,而桥接模式是引用一个实现类的接口。4、一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现,将相关的条件分支移入它们各自的 Strategy 类中,以代替这些条件语句。2、需要使用一个算法的不同变体。例如,定义一些反映不同空间的空间/时间权衡的算法当这些变体实现为一个算法的类层次时,可以使用策略模式。模式意图:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。意图:定义一系列的算法(武器),把它们一个个封装起来,并且使它们可以相互替换。

2023-12-13 21:19:30 666

原创 用23种设计模式打造一个cocos creator的游戏框架----(十四)观察者模式

在前面的设计模式中,我们采用了代理模式,通过“代理拦截修改”实现了数据层和视图层之间的响应式。模式意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。3、当一个对象必须通知其他对象,而它又不能假定其他对象是谁,即不希望这些对象是紧耦合的。2、当对一个对象的改变需要同时改变其他对象,而不知道具体有多少对象有待改变时。模式名称:观察者模式。

2023-12-12 22:09:20 786

原创 用23种设计模式打造一个cocos creator的游戏框架----(十三)模板方法模式

模板方法模式还是比较简单的,在这里我们以前面第一个的构建好的游戏为例。每个游戏在游戏开始的时候,都有初始化玩家,加载资源,进入游戏大概这三个过程的小骨架。模式意图:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法旨在特定点调用“hook”操作(默认的行为,子类可以在必要时进行重定义扩展),这就只允许在这些点进行扩展。意图:定义一个操作中(游戏开始)的算法骨架(加载过程),而将一些步骤延迟到子类(每个游戏)中。1、一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。

2023-12-11 21:17:31 680

原创 用23种设计模式打造一个cocos creator的游戏框架----(十二)状态模式

一个操作中含有庞大的多分支的条件语句,且这些分支依赖丁该对象的状态。这使得开发者可以根据对象自身的情况将对象的状态作为一个对象,这一对象可以不依赖于其他对象独立变化。比较常见的是单位正在释放一个技能,这个时候一个飞锤飞过来,将他击晕了,他停止了技能的释放。意图:允许一个对象(单位)在其内部状态改变时(由其状态对象来)改变它的行为。在一般的游戏开发中状态值通常是一个枚举值,但在状态模式中,状态值是一个通过实现了 I。1、一个对象的行为决定于它的状态,并且它必须在运行时刻根据状态改变它的行为。

2023-12-10 20:05:25 991 5

原创 用23种设计模式打造一个cocos creator的游戏框架----(十一)桥接模式

攻击者使用武器中的攻击方法作为抽象方法,具体如何攻击需要武器来实现,武器作为一个独立的存在,具有攻击功能外还具有售卖功能。桥接和策略在某些方法上有些像,但是桥接模式与策略模式的差异之处在于,桥接只是桥接了其中的一个或几个方法,而策略模式是替换了整个策略算法。意图:将抽象部分(攻击)与其实现部分(剑攻击和弓攻击)分离,使它们都可以独立地变化(剑除了攻击方法之外还有售卖等其他功能,当前只是桥接了攻击功能)。桥接模式,通俗点讲就如同嫁接,比如有一个树,会开花结果,我给它嫁接苹果枝,在开花结果后,长的是苹果。

2023-12-09 20:12:17 763

原创 用23种设计模式打造一个cocos creator的游戏框架----(十)迭代器模式

在游戏中会经常用到迭代器,一般情况下我们定义一个index,随着游戏或者操作进行index++,来进行下一步对象或者操作。这里我们用到的场景是新手指引,当某个事件发生时,新手指引聚合器创建一个指引迭代器,指引迭代器指引玩家一步一步的按顺序完成。意图:提供一种方法顺序访问一个聚合对象(新手指引聚合器)中的各个元素(新手指引),且不需要暴露该对象的内部表示。模式意图:提供一种方法顺序访问一个聚合对象中的各个元素,且不需要暴露该对象的内部表示.(Aggregate):定义创建相应迭代器对象的接口。

2023-12-08 13:37:13 1010

原创 用23种设计模式打造一个cocos creator的游戏框架----(九)访问者模式

在访问者模式中,访问者类需要访问被访问元素的内部状态,以便执行一些操作。这里打个比方,比如本来你只会发1234567乐符发音,音乐老师访问者过来说,听他的指挥,你说好的(accept),之后你就听从音乐老师的指挥哼出了一个曲调。但是,是否应该使用这种方式,取决于你的具体需求,包括你的游戏的复杂性,你对易于理解和维护的需求,以及你对封装的考虑等。在游戏设计中,不确定其他人是如何用这个访问者模式的,但是我的第一感觉是是否能用在攻击上面,比如单位A对单位B发动了一个火球攻击,火球在遇到单位B时,对其产生了伤害。

2023-12-07 11:14:59 1306

原创 用23种设计模式打造一个cocos creator的游戏框架----(八)适配器模式

比如一般的网络请求都是XMLHttpRequest进行的get与post的请求,请求体是json,返回的是自己熟悉的{code:200,msg:"成功",data:{}}格式,但是我用tsrpc这个ts框架后,请求体变成了tsrpc特有的Proto,且返回个格式变为了{isSucc:true,err:null,res:{}},我希望游戏框架里面请求方式是类似xhgame.net.post('/api/userInfo'),无论我们如何换后端,前端都是不用改。模式名称:适配器模式。在用构建器构建游戏时。

2023-12-06 16:04:45 625

原创 用23种设计模式打造一个cocos creator的游戏框架----(七)代理模式

游戏中也经常用到数据与视图的绑定,比如玩家的金币,在数据层player.money = 200时,我们希望页面上的所有显示金币数量的地方,都自动自动刷新视图显示为200,且如果数值不变时,你们你触发n多次player.money = 200,都不会触发刷新视图的事件。代理的玩法有很多,在游戏框架中我们如何使用代理模式,应该也有很多玩法,这里我只介绍其中一种。:也称为大使,这是最常见的类型,在分布式对象通信中被用于表示运行在不同地址空间的对象。:代理所代表的真实对象,是真正的被调用的对象。

2023-12-06 14:07:02 965

原创 用23种设计模式打造一个cocos creator的游戏框架----(六)抽象工厂模式

我们希望的是类似xhgame.itemFactory.createUnitItem(),xhgame.itemFactory.createEffectItem()这种方法来创建单位而不需要知道具体创建的是2D单位还是3D单位。意图:提供一个接口,用于创建相关或依赖对象的家族(每个游戏里都有的单位、特效、地板等),而不需要明确指定具体类(具体是2D单位还是3D单位)。模式意图:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。1、一个系统要独立于它的产品的创建、组合和表示时。

2023-12-05 14:54:25 731

原创 用23种设计模式打造一个cocos creator的游戏框架----(五)工厂方法模式

而且这些单位都有一个特点,就是需要有一个“单位池”来进行回收再利用。3、当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。模式意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。游戏中我们经常会创建一些单位对象,这些单位对象一般数量都比较大,比如士兵,地板,特效等等。2、当一个类不希望由它的子类来指定它所创建的对象的时候。1、当一个类不知道它所必须创建的对象的类的时候。模式名称:工厂方法模式。

2023-12-05 12:39:24 709

原创 用23种设计模式打造一个cocos creator的游戏框架----(四)装饰器模式

尽管ECS模式和装饰器模式都允许动态改变对象的行为,但它们的实现方式和目标是不同的。而在装饰器模式中,对象的基本行为是由其类定义的,装饰器只是添加或修改这些行为。此外,ECS模式中的实体并不需要实现与其组件一致的接口,这是它与装饰器模式的另一个主要区别。它通过将对象封装在装饰器对象中来实现这一点,装饰器对象实现了与原对象相同的接口,并在调用原对象的方法之前或之后添加新的行为。:这是所有装饰器类的基类,它定义了一个与抽象组件接口一致的接口,这样它就可以装饰所有的具体组件。:这是抽象组件的具体实现。

2023-12-05 11:00:33 1895

原创 用23种设计模式打造一个cocos creator的游戏框架----(三)外观模式模式

其实就是给我们的游戏框架设计一个主要的入口,比如我设计的游戏框架名叫xhgame(小何游戏),我就以这个xhgame作为这个外观。意图:为一组游戏内的子系统提供了一个统一的框架入口xhgame。这个xhgame接口位于所有子系统之上,使用户可以更方便地使用整个系统。模式意图:为一组复杂的子系统提供了一个统一的简单接口。这个统一接口位于所有子系统之上,使用户可以更方便地使用整个系统。现在可以快速方便的使用各个子系统了,客户端只需要调用简单的接口,就可以直达子系统内的方法。

2023-12-04 13:38:45 822

原创 用23种设计模式打造一个cocos creator的游戏框架----(二)单例模式

在全局访问点gameInstance中设置了设置了当前唯一的游戏game:DemoGame,以及系统种需用到的存储单例,时间单例,及事件单例等等。有一些类会自带单例模式,有些采用统一的单例去管理。因为我们是设计一个游戏框架所以这里采用了统一的方式。方便认识整个系统中那些系统使用了单例。模式意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。意图:保证一个全局唯一的单例,并提供一个访问它的全局访问点。

2023-12-04 11:34:07 790 1

原创 用23种设计模式打造一个cocos creator的游戏框架----(一)生成器模式

完成一个游戏开发后,我们想稍微修改下配置,修改下ui,调整一下玩法变成一个新的游戏,结合设计模式的意图,我们修改一下我们的意图。意图:将一个复杂(游戏)对象的构建与表示(小游戏玩法)分离,使得同样的构建过程可以创建不同的表示(小游戏玩法)。模式意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。有了构建器,下次再分离出一个消除类玩法,只需要new 一个新的构建器就可以了。模式名称:生成器模式。

2023-12-04 10:43:08 894 1

原创 记一次Object.assign对象引用引起的坑,以及采用Proxy的优化

尝试Proxy的改进

2023-09-28 12:31:26 139

原创 在cocos creator的中使用MagicaVoxel的导出的obj模型

在cocos creator的中使用MagicaVoxel的导出的obj模型,【重点1】:导出到的位置需相同【重点2】只需放入png和 生成的fbx【重点3】删除png文件

2023-07-12 23:11:16 515

原创 “灵剑出鞘”小游戏开发日志(12)----完善关卡信息,上线前的关卡测试及优化

设置10个关卡,能让用户基本上手,上线微信小游戏,上线抖音小游戏

2023-06-01 23:31:32 171

原创 “灵剑出鞘”小游戏开发日志(11)---- 激励广告后的额外奖励

玩家在出手次数用尽,第一次闯关失败的情况下,给与弹窗提示。用户观看完视频后,给与重生并获得3次“出鞘”机会。

2023-05-28 21:37:49 139

原创 “灵剑出鞘”小游戏开发日志(10)---- 与服务端交互,获取奖励资源

前面我们已经实现了游戏的胜利和失败,并做了游戏结束后的资源释放。接下来就是与服务端交互,记录玩家的资源,给与玩家资源,留住玩家,让他对游戏有占有感。上面的代码中,我们创建了一个名为"object"的对象和一个名为"handler"的处理器。这里主要是vm的视图与数据的双向绑定,原先oops是有一个vm的组件来做的,我就试着问gpt.需要注意的是,美观打印对象中的属性变化需要借助一些控制台输出格式化的工具库,例如。好的,结合gpt,我们就做一个简单的vm数据监听。2、结算页,获得奖励,显示更新后的资源。

2023-05-26 22:12:32 74

原创 “灵剑出鞘”小游戏开发日志(9)---- 游戏胜利及失败

前面已经完成了主要的玩法和特效,接下来就是游戏的胜利与失败的界定。当前游戏主要是休闲游戏,且与三消类似,所以大致也会参照三消的模式。之前的第一版中,敌方会像植物大战僵尸一样,不断靠近我们的,但是这个玩法不够休闲。所以目前的设计主要是偏休闲的固定消除,会在家园模式中后期添加防守类的模式。在测试阶段,发现了一些数据回收的问题,因为每次结束战役,需要将战役内的节点和资源回收。接着在游戏开始后,添加2个胜利与失败的组件。先在关卡设置那里配置胜利和失败的配置。接下来就是找到事件的触发点,埋放事件。

2023-05-24 21:23:41 68

原创 “灵剑出鞘”小游戏开发日志(8)---- “剑出鞘”的特效及三连触发

有了gpt给出的算法,接下来我们来实现打击的效果和规则。形成同属性三连,进行横向纵向斜对的打击。

2023-05-22 16:42:56 86

原创 “灵剑出鞘”小游戏开发日志(7)---- “剑出鞘”的打击玩法

原先设计时把方块叠加这块设计的过于复杂了,这次借助gpt对它进行一次大的优化改造。生成一个“剑诀”,滑动“剑诀”,可在场上进行叠加,点击出鞘(自动出鞘),对所有套在剑诀内的单位造成1点伤害。在游戏开始前,需要在 10 * 5 的网格中创建一个数组,用于存储方块的状态。接下来就是要把数据层的东西,在视图层给体现出来,因为战斗区域就5*7=35个,为了重复利用就一次性生成好。每次移动时,先用原先的缓动tween移动过去,完成后隐藏,回到原始位置。block的坐标gx,gy为网格内的网格(grid)格子数坐标。

2023-05-17 22:55:17 56

原创 “灵剑出鞘”小游戏开发日志(6)---- 摄像头角度的转变及场景的滑动预览

前面我们已经实现了,关卡内的角色显示和场景显示。接下来,我们来环视一下我们创建的这个虚拟世界,通过摄像头的角度和转变。这也是为后面,玩家自定义装饰家园做准备。首先建立一个node节点,命名为CameraCenterNode,摄像头的中心始终将对准这个node,为后期的装修定位用。为了防止移动时摄像头又卡顿的现象,将以前裁剪的“缓动系统”重新打开,这样就能使用tween等缓动函数。玩家可以自由切换观察角度,左右滑动预览游戏内的场景。是将滑动的偏移加到原有的坐标上,得到toVec3。下图的帧率设置的是40。

2023-05-15 21:27:58 105

原创 “灵剑出鞘”小游戏开发日志(5)---- 游戏关卡内环境及单位的显示

用了单位 UnitItem 的对象及对象池进行管理

2023-05-13 19:15:12 124

原创 “灵剑出鞘”小游戏开发日志(4)---- 设计游戏架构设计及资源的加载loading页面

分析出游戏中的一些实体已经大致的实现规划。设计整个游戏架构,实现满足ecs架构的组件和对象

2023-05-10 22:02:41 168

原创 “灵剑出鞘“小游戏开发日志(3)---- 登录页

用ecs的组件模式,实现一个自动登录的PlayerLoginComp组件

2023-05-09 23:20:26 151

原创 “灵剑出鞘“小游戏开发日志(2)---- 引入ecs框架

结合已使用过的oops架构的理解,用chatgpt4,写一个符合自己游戏运行的ecs框架

2023-05-08 13:49:25 487

原创 “灵剑出鞘“小游戏开发日志(1)---- 搭建25d的环境

搭建25d的环境。至于为什么搭建25d,因为3d模型对于目前的独立开发者来说入门和后期美术成本有点高(可能是我一直想做一个中小型游戏的缘故)。这里的25d,只类似于3D立体书本的场景。有3d摄像头,但是人物都是纸片人主要是上线微信小游戏和抖音小程序,游戏是竖屏游戏,游戏玩法:通过叠"剑诀"来产生"出招剑式",目前同属性的连成3个,就会额外产生打击效果,实现解压式的消除类玩法。

2023-05-06 21:09:04 222

原创 chrome 100+以后打印页多出空白页问题

对比了修复前后的内容,发现是原先page-break-after这个属性处于非严格模式,多几个page-break-after在老版本中无影响,但是到了新版本应该是被修复了。你写了几个就空白几个页。之前的打印页好好的,最近chrome版本到了112.0.5615.49 后,客户反应,打印预览页多出了好几个空白页。最后得出的猜测是在chrome 100+后的某个版本修复打印相关的。在360下是正常的,在chrome 98左右也是正常的。结合网上的内容,得到以下基本样式。

2023-04-12 10:43:53 785

空空如也

空空如也

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

TA关注的人

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