设计模式与游戏完美开发
文章平均质量分 77
liaoshengg
学untiy3d的萌新
展开
-
学习使用UML类图
前言UML在学习设计模式中是必不可少的建模图,建模语言, 在UML系统开发中有三个主要的模型: 功能模型 从用户的角度展示系统的功能,包括用例图。 对象模型 采用对象、属性、操作、关联等概念展示系统的结构和基础,包括类图、对象图、包图。 动态模型 展现系统的内部行为。 包括序列图、活动图、状态图。 UML可以百度有很多解释, 这里主要是写关于UML类图的用法一、类的基本结...原创 2018-07-22 13:33:56 · 419 阅读 · 0 评论 -
Unity3D 设计模式学习之观察者模式
在本书中,成就系统使用了观察者模式。要实现成就系统之前,一般需要企划单位先将需要要的乘积事件列出来,并在项目完成到某个段落之后,才开始加入实现开发中。大致实现逻辑: 先定义“游戏事件”,如敌方角色阵亡、玩家角色阵亡、玩家角色升级等。当游戏进行过程中,有任何“游戏事件”被触发时,系统就要通知对应的“成就项目”,进行累积或条件判断,如果达到,则完成“成就项目”并通知玩家或直接给予奖励比较...原创 2018-09-06 19:18:09 · 961 阅读 · 0 评论 -
Unity3D 设计模式学习之备忘录模式(二)
上篇写了一个备忘录模式的简单例子模板,这次来看看具体的实现应用。这里列出上篇的地址: https://blog.csdn.net/liaoshengg/article/details/82530426现在首先来看需求: 在《P级阵地》的成就系统,只需保存每一项成就系统的最佳记录,并不需要保留多个版本,因此,在运用备忘录模式时,省去了Caretaker记录保存者的实现实现成就记...原创 2018-09-09 16:29:28 · 512 阅读 · 0 评论 -
Unity3D 设计模式学习之命令模式
前言一些及时战略游戏RTS 会用到命令模式,当有需求的一些功能是可以新增,删除,调度类型的,如兵营的出兵功能,我们点击按钮生成士兵,(生成士兵命令),还可以手动取消,连续施加出命令。这时就可以使用到命令模式(Command)GOF对于命令模式的定义如下: 将请求封装成为对象,让你可以将客户端的不同请求参数化,并配合队列,记录,复原等方法来执行请求的操作再见定义简单分为两本部分 请求...原创 2018-09-03 17:54:19 · 873 阅读 · 0 评论 -
Unity3D 设计模式学习之组合模式
前言对应游戏中的UI部分,可以使用分层式管理,将2D组件按照功能关系按层次摆放,是比较容易了解、设计和修改的。分层式管理一般也称树状结构,常用于软件实现和应用中的一种结构。GOF对于组合模式Composite的定义是: “将对象以树状结构组合,用以表现部分-全体的层次关系。组合模式让客户端在操作 各个对象或组合和组合对象是一致的”树状结构来组合各个对象,所以实现上包含了根结点...原创 2018-09-03 14:32:59 · 2067 阅读 · 0 评论 -
Unity3D 设计模式学习之备忘录模式
备忘录模式(Memento)在游戏中可用来做存储功能。在书中使用备忘录模式”存储成就记录”直接将数据存盘功能实现于游戏功能类中,一般来说不太理想,因为违反了单一职责原则(SRP)。也就是说,各个游戏功能类应该专心处理与游戏相关的功能。而记录保存,也应交由专职的记录保存类为说明要专门写一个记录保存类呢? 书中给出了解释说明: 如果在功能模块中实现,会将内部成员数据全部公开。 虽然可...原创 2018-09-08 17:27:25 · 806 阅读 · 0 评论 -
Unity3D设计模式学习之享元模式
前言享元模式Flyweight 用来解决大量且重复对象的管理问题。当内存受限的时候,使用享元模式来解决 大部分对象共享的问题。GOF享元模式的定义为 使用共享的方式,让一群大小规模对象能更有效地运行。共享共享指的是使用管理结构来设计信息的存储方式,让可以被共享的信息,只需要产生一份对象,而这个对象能够被引用到其他对象中。 我们把哪些对象只能读取而不能写入的共享部分称为“...原创 2018-09-02 17:49:32 · 1110 阅读 · 0 评论 -
Unity3D设计模式学习之观察者模式(二)
上一篇只是简单的写了观察者模式,对观察者模式只是有个大致的了解,设计模式一般都比较抽象,在实际使用思需要根据需求来设计、重构,这篇就看看书上的例子,加深理解。实现说明游戏事件系统的实现//游戏事件系统的实现public enum ENUM_GameEvent{ None = 0, EnemyKilled = 1, //敌方单位阵亡 SoldierKil...原创 2018-09-07 19:15:36 · 631 阅读 · 0 评论 -
Unity3D 设计模式学习之责任链模式
前言责任链模式可以用来对对关卡系统的重构。将关卡数据使用类加以封装 封装的信息根据需求而定:如要出场的敌方角色的设置、通关条件、下一关的记录。 也就是让每一关都是一个对象并加以管理。而关卡系统则是在这群对象中寻找“条件符合”的关卡,让玩家进入挑战。 等到关卡完成后,再进入到下一个条件符合的关卡。GOF对责任链模式(Chain of Responsibility)的定义 “让一群...原创 2018-09-04 20:12:56 · 884 阅读 · 0 评论 -
Unity3D设计模式学习之工厂方法模式Factory Method
前言GOF对工厂方法模式的解释是 定义一个可以产生对象的接口,但是让子类决定要产生哪一个类的对象,工厂方法模式让类的实例化程序延迟到子类中实施。带来的好处: 能针对对象产生的流程定制规则; 能减少客户端参与对象生成的过程,减少客户端与该类的依赖度,便于后续的维护。工厂方法模式的实现范例工厂方法模式的实现方式并非固定第一种:由子类产生 定义一个产生对象的接口(返回...原创 2018-08-25 11:43:59 · 672 阅读 · 0 评论 -
Unity3D 设计模式学习之建造者模式
前言建造者模式Builder在书中用来对于角色的组装,角色组装可以使用工厂模式来生存角色对象,但是如果要对 角色(双方士兵)作不同差异功能的时候就要再次分开写两个新的工厂类(我方士兵工厂类,敌方士兵工厂类),如果要对士兵类添加新的功能,则可以往工厂类添加方法。但是这样做会让工厂管理类这时可以用到建造者模式了 GOF对建造者模式的定义是: 将一个复杂对象的构建流程与它的对象表现分离...原创 2018-09-02 18:16:40 · 1143 阅读 · 0 评论 -
Unity3D 设计模式之策略模式
前言策略模式在设计模式与完美游戏开发一书中使用,用来对角色属性的计算 GOF对策略模式的定义: 定义一组算法,并封装每个算法,让它们可以彼此交换使用。策略模式让这些算法在客户端使用使用它们 时能更加独立简单抽象Context拥有一个Startegy类的对象引用,然后通过对象引用获取想要的策略 Startegy类通过设置子类对象,来设置状态//客户端类通过Star...原创 2018-08-12 15:27:25 · 1533 阅读 · 0 评论 -
Unity3D 设计模式之桥接模式
前言桥接模式的GOF定义:抽象与实现分离,使二者可以独立地变化设计模式与游戏完美开发一书用了个例子举例例子当角色类有武器这个类的时候。武器类一旦需要变化,那么角色类也就需要变化,而一旦角色类变化,就要给角色类新增加武器类。此时就可以让武器类抽象出来了,给武器类做一个抽象接口类,然后让子类具体实现。此时角色类只需要一个武器接口类,具体内容让武器子类提供同样,角...原创 2018-08-11 11:44:20 · 516 阅读 · 0 评论 -
unity3D FSM有限状态机(状态设计模式)
前言为了解决游戏过于麻烦的状态转换(人物动画过多),使用有限状态机 缺点:代码量大编写使用多态和Switchnew(状态设计模式)类的介绍PlyayCtrl:挂载在角色身上的脚本,用来控制状态机,(控制状态机中状态的切换)。 Machine:状态机器类,储存所有状态,对状态进行切换,和状态的保持工作。 Base: 状态的基类,给子类提供接口(方法) Tem...原创 2018-07-12 14:07:50 · 20869 阅读 · 4 评论 -
Unity3D 学习设计模式之:中介者模式 Mediator
前言上次的外观模式用于在对外部使用(状态场景类里使用PBaseDefense类对象,来对所有子系统进行初始化,更新,结束释放)操作。然后PBaseDefense类还可以使用中介者模式,来对内部所有子系统之间的操作进行管理类的介绍中介者就是PBaseDefense类(Mediator) 而PBaseDefense里的所有子系统类就是(Colleague) 因为根据单一职责(SRP...原创 2018-08-05 11:22:54 · 758 阅读 · 0 评论 -
unity3D 外观模式Facade
前言外观模式我认为就是在某一状态场景中,使用一个类,来统一管理所有的子系统。子系统做具体实现,如果外部需要使用,获取子系统,就通过这个类来调用获取。具体实现思路这个类在书上被称作是PBaseDefense ,被状态场景类(如战斗状态场景)使用,而PBaseDefense类里包含所有子系统的对象引用,所有可以使用所有子系统的公有方法的有这些子系统就要对这些对象引用初始化,new出...原创 2018-07-31 09:54:04 · 470 阅读 · 0 评论 -
Unity3D 设计模式学习:状态模式
前言原创 2018-07-25 17:25:52 · 313 阅读 · 0 评论