设计模式之游戏
文章平均质量分 80
_不动明王
自从厌倦于追寻,我已学会一觅即中。自从一股逆风袭来,我已能抵抗八面来风,驾舟而行。
展开
-
游戏设计模式----单例模式
定义单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。C#单例模式主要分两种饿汉式在类加载时已经创建好该单例对象。public class Test_Instan{ private static Test_Instan instant=new Test_Instan(); public static Test_In原创 2022-01-11 16:26:12 · 2463 阅读 · 0 评论 -
设计模式之游戏--观察者模式详解
引入问题在我们的游戏开发中,我们常常会遇见这种场景,比如在战斗系统中如果敌人死亡,我们要通知UI系统,成就系统,关卡系统等一些其它系统做出相应的行为。你可能做出如下设计方法1:让战斗系统亦或者敌人持有其它系统的的引用,然后在敌人死亡时调用其它系统的相应方法。方法2:让各系统时时监听敌人的相应状态,敌人死亡时调用系统的相应方法这两种方法看起来没多大毛病,但仔细分析我们就就会发现其实是有所欠缺的。方法1:当我们后期需求变更,增加了一个新的系统或者一个新的功能,那么我们就需要修改战斗系统或者敌人的代码,原创 2022-01-07 15:26:06 · 2237 阅读 · 0 评论 -
设计模式之游戏--命令模式
设计模式之游戏--命令模式引入问题**定义**UML具体示例总结引入问题在软件开发过程中,请求-响应模式的功能是一个很常见的功能,比如在我们的策略游戏中,通常有一个兵营系统,当我们点击某个兵营训练时就训练出某种士兵。如果是非命令模式下,你可能会做出如下模拟:首先新建一个兵营类:public class Camp{ public void Make_Warrior_Soldier() { MonoBehaviour.print("开始制造战士士兵"); }原创 2022-01-05 13:59:39 · 1890 阅读 · 0 评论 -
设计模式之游戏--状态模式
一.引入问题在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理。最直接的解决方案是将这些所有可能发生的情况全都考虑到。然后使用判断语句来做状态判断来进行不同情况的处理。但是对复杂状态的判断就显得“力不从心了”。随着增加新的状态或者修改一个状态导致判断语句的增多或者修改可能会引起很大的修改,而且程序的可读性,扩展性也会变得很弱。维护也会很麻烦。此时我们的状态模式就孕育而生了。而状态模式的作用就是:解决当控制一个对象状态转换的条件表达式过于复杂时,把状态的判断逻辑转移到表示不同的一系列类当中,把复原创 2022-01-03 11:46:59 · 1398 阅读 · 0 评论 -
设计模式之游戏--工厂模式详解
工厂模式一.简单工厂模式二.工厂方法模式三.抽象工厂模式使用总结引入问题:在面向对象编程中,创建一个对象的最常用的方法是new一个对象实例,new对象操作符就是用来构造对象实例的,但是在一些情况下,new操作符直接生成对象会带来一些问题,举例说,许多类型对象的创建都需要一系列的步骤,可能需要计算或取得对象的初始设置,选择生成哪个子对象实例,或者在生成需要的对象之前必须先生成一些辅助功能的对象,这些情况下,对象的建立就是一个过程,不仅是一个操作。定义:将原来分布在各个地方的复杂对象创建过程单独抽离出来,原创 2021-11-19 12:26:20 · 3946 阅读 · 0 评论 -
设计模式之游戏--桥接模式
设计模式之游戏–桥接模式一.引入问题在游戏引擎中,同一种图形可以由不同的绘图引擎,同一种绘图引擎也可以绘制不同的图形。从继承的角度上分析的话可以划分如下层次。通过分析我们发现这样设计有很大的问题:(1)扩展性问题:如果新增图形类,那么就要新增各绘图引擎下的类,同理新增绘图引擎也是如此,这样到了后期类的个数会呈几何倍数递增。(2)违反了单一职责原则:一个类XXXX绘制的图形有两个引起这个类变化的原因。简单来说就是使用继承的方式,不管新增一个类型还是新增一个品牌,都会牵扯出另外一个维度的变化。原创 2021-11-15 23:05:38 · 2832 阅读 · 0 评论 -
(二)设计模式之游戏--依赖倒置原则
(二)设计模式之游戏–依赖倒置原则引入问题:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。解决方案:将类A修改为依赖抽象I,类B和类C各自实现抽象I,类A通过接口I间接与类B或者类C发生联系,则会大大降低修改类A的几率,实际上就是解耦合。(1)定义:高层模块不应该依赖底层模块,他们都依赖于抽象(接口,抽象类等),抽象不应该依赖于细原创 2021-11-13 14:15:30 · 2642 阅读 · 0 评论 -
(一)设计模式之游戏--开闭原则
开闭原则(1)定义:对扩展开放,对修改关闭。通俗来讲就是软件实体应尽量在不修改原有代码的情况下进行拓展。(2)实现分析:抽象化是实现开闭原则的关键。我们通常通过提取事物的共性来进行抽象封闭,然后对事物的差异性提供接口进行扩展开放。(3)示例:在游戏中经常会出现让玩家选择角色进行游戏这个功能。1)我们的原始方案可能如下:using System.Collections;using System.Collections.Generic;using UnityEngine;public c原创 2021-11-12 08:31:47 · 1344 阅读 · 0 评论