摘要:GoF中定义: “提供一个能够建立整个类群组或有关联的对象,而不必指明它们的具体类。” 意思就是 根据不同的执行环境产生不同的抽象类子类 抽象工厂模式经常在面试中会涉及到 下面的例子为工厂1和工厂2 两个工厂都可以生成产品A和B 但是两个工厂工艺不同 所以工厂1只能生产产品A1和B1 工厂2只能生产
阅读全文
摘要:GoF中定义: “定义一个程序设计语言所需要的语句,并提供解释来解析(执行)该语言。” 传统上,执行程序代码通常通过两种方式 第一种:编译程序 第二种:解释器 常见的使用解释器的程序设计语言 包含流行与网页设计领域中的脚本语言 如JavaScript、PHP、Ruby等 这些程序代码经过一般文本编辑
阅读全文
摘要:GoF中定义: “使用原型对象来产生指定类的对象,所以产生对象时,是使用复制原型对象来完成。” Unity中 开发者可以组装游戏对象 它可以包括复杂的组件 组装好了之后,就可以将其存储为Prefab类型的Unity Asset资源 程序代码中使用的实例化方法(GameObject.Instance)
阅读全文
摘要:GoF中定义: “在不知道集合内部细节的情况下,提供一个按序方法存取一个对象集合体的每一个单元。” 迭代器模式由于经常使用到 已经被现代程序设计语言纳为标准语句或收录到标准函数库中 在C#中,经常使用泛型存储对象 当想按序存取这些泛型容器时,都会使用C#的foreach语句 foreach语句就是一
阅读全文
摘要:GoF中定义: “提供一个代理者位置给一个对象,好让代理者可以控制存取这个对象。” 代理模式多用来优化资源的加载 当资源已经加载过时,使用原来的资源 当资源没有加载过时,开始加载 此过程由代理模式控制 代理模式就像是一个过滤器 只有在一定条件下才可以执行一定的代码 这个条件可以在外部进行控制 文章整
阅读全文
摘要:GoF中定义: “将一个类的接口转换成为客户端期待的类接口。适配器模式让原本接口不兼容的类能一起合作。” 适配器模式与装饰模式有一定的相似之处 两者都是在着手解决C#不能多继承的问题 当出现一个不符合客户端接口的情况时 再不想破坏接口的前提下 就必须设计一个适配器来进行转换 将原本不符合的接口,转换
阅读全文
摘要:GoF中定义: “动态地附加额外的责任给一个对象。装饰模式提供了一个灵活的选择,让子类可以用来扩展功能。” 装饰模式一般用来增加新功能 它可以避免更改已经实现的程序代码 从而增加系统的稳定性,也变得更加灵活 装饰模式解决了C#不能多继承的问题 它通过从父类继承出一个不符合“类封装时的抽象定义”的子类
阅读全文
摘要:GoF中定义: “定义一个能够在一个对象结构中对于所有元素执行的操作。访问者让你可以定义一个新的操作,而不必更改到被操作元素的类接口。” 暂时没有完全搞明白 直接上代码 文章整理自书籍《设计模式与游戏完美开发》 菜升达 著
阅读全文
摘要:GoF中定义: “在不违反封装的原则下,获取一个对象的内部状态并保留在外部,让对象可以在日后恢复到原先保留时的状态。” 对于一些需要存储的数据,比如历史最高分 当与得分减分系统写入一个类时,违反了单一职责原则 最好是做一个SaveData的类单独存储或获取 而当使用一个单独的类时,又必须将数据pub
阅读全文
摘要:GoF中定义: “在对象之间定义一个一对多的连接方法,当一个对象变换状态时,其他关联的对象都会自动收到通知。” 现实中,社交网络就是个例子。 以前的报社,每次出新刊的时候, 报刊便会将新刊一本一本的送到订阅报刊人的手中 于是,每次出新刊,报社都得送到每个人的手中 而如今的微博,便是应用了观察者模式
阅读全文
摘要:GoF中定义: “让一群对象都有机会来处理一项请求,以减少请求发送者与接收者之间的耦合度。将所有的接受对象串联起来,让请求沿着串接传递,直到有一个对象可以处理为止。” 举个现实中的例子: 电信公司的客服系统。 公司有很多客服,需要客服解决的问题更加纷繁复杂 然而,每个问题都要经由每个客服,显然是不合
阅读全文
摘要:GoF中定义: “将请求封装成为对象,让你可以将客户端的不同请求参数化,并配合队列、记录、复原等方法来执行请求的操作。” 实现命令模式的标准在于: 当请求被对象化后,对于请求对象是否有“管理”上的需求。如果有,则以命令模式实现。 “管理”指的是对命令的延迟或命令的暂存。 举个例子 红警(红色警戒)中
阅读全文
摘要:前段时间在忙一个新项目 博客好久没有更新了 GoF中定义: “将对象以树状结构组合,用以表现部分-全体的层次关系。组合模式让客户端在操作各个对象或组合时是一致的。” 是一致的意思就是:能够对根节点调用的操作,同样能够在叶节点上使用 “分层式管理结构”一般也称为“树状结构” Unity中对于游戏对象的
阅读全文
摘要:GoF中定义: “使用共享的方式,让一大群小规模对象能更有效地运行” 享元模式一般应用在游戏角色属性设置上 游戏策划需要通过“公式计算”或者“实际测试”等方式找出最佳的游戏属性 因此,在游戏系统中建立一个管理方式来建立和存储属性信息就显得尤为重要 对象中那些只能读取不能写入的共享部分被称为“内在状态
阅读全文
摘要:GoF中定义: “将一个复杂的构建流程与它的对象表现分离出来,让相同的构建流程可以产生不同的对象行为表现。” 建造者模式可以分为两个步骤来实施: 1.将复杂的构建流程独立出来,并将整个流程分成几个步骤,其中的每一个步骤可以是一个功能组件的设置,也可以是参数的指定,并且在一个构建方法中,将这些步骤串接
阅读全文
摘要:GoF中定义: “定义一个可以产生对象的接口,但是让子类决定要产生哪一个类的对象。工厂方法模式让类的实例化程序延迟到子类中实施” 当类的对象产生时,若出现下列情况: 1.需要复杂的流程 2.需要加载外部资源,如从网络、存储设备、数据库 3.有对象上限 4.可重复利用 建议使用工厂方法模式来实现一个工
阅读全文
摘要:GoF中定义: “在一个操作方法中定义算法的流程,其中某些步骤由子类完成。 模板方法模式让子类在不变更原有算法流程的情况下,还能够重新定义其中的步骤” 每一次武器攻击目标时,都要按逻辑执行: 1.开火、枪口特效 2.子弹特效 3.武器特效 4.通知敌方被击中 而每一种武器(如:枪,炮)都要执行一遍相
阅读全文
摘要:GoF中定义: “定义一组算法,并封装每个算法,让它们之间可以彼此交换使用。 策略模式让这些算法在客户端使用它们时能更加独立。” 游戏开发过程中 不同的角色会有不同的属性计算方法 初级解决方法便是:if else,不够再来几个if else 高级点儿的就用switch case配合enum 对于小型
阅读全文
摘要:GoF定义:“将抽象与实现分离,使二者可以独立的变化”游戏中,经常有这么一种情况基类角色类(ICharacter),下面有子类士兵类(ISoldier)、敌军类(IEnemy)基类武器类(IWeapon),下面有子类枪类(IGun)、炮类(ICannon)当然,有用枪的士兵,有用炮的士兵这么一组合,就是2*2 = 4个类游戏后期,当角色类添加一个角色类时,变成了2*3 = 6个类若再添加一个武器类...
阅读全文
摘要:游戏与其他软件最大的不同 就是游戏有Update逻辑 一般的软件是由“事件”驱动 因为它不会突然跑出来一只“兔子” 因此,只有游戏才有“帧”的概念 (没秒多少帧,就是没秒Update执行多少次) Unity有自己的生命周期 Awake,Start,Update… 只要继承MonoBehaviour就
阅读全文