设计模式
萧然CS
喜欢玩游戏,更喜欢做游戏
展开
-
观察者模式及使用委托简化观察者
先说明一下观察者模式:观察者模式|菜鸟教程 我用最简单的方式将原理实现了一下: //被观察者父类,主要有Attach、Detach、Notify函数 //被观察者父类 public class Subject : MonoBehaviour { //记录注册的观察者 private List<Observer> observ...原创 2019-11-08 12:00:15 · 213 阅读 · 0 评论 -
设计模式之享元模式(Flyweight)
与命令模式一样,本次是对《Game.Programming.Patterns》中享元模式的一些理解和示例转换,代码为主,欢迎大家的意见和建议~~ 先看一下菜鸟教程对享元模式的描述: 个人理解的享元,顾名思义就是共享单元,使用一个共享实例,代替大量重复的实例。 实现:将地图划分为多个规则排列的格子,随机地形 //地形实例类 public class Terrain { ...原创 2018-10-25 21:25:38 · 199 阅读 · 0 评论 -
设计模式之命令模式(Command)
首先感谢《Game.Programming.Patterns(游戏编程模式)》一书,让我对设计模式有了更加全面的理解。 因为书中都是C语言的示例,无奈对C又知之甚少,在此就个人的理解,对书中命令模式章节的示例,尝试用C#写一下,如果有不恰当的地方还希望大家指出~~ 先看一下菜鸟教程对命令模式的描述: 实现:键盘输入触发角色行为 --> 键盘输入 --> 发出命令 -->...原创 2018-10-25 21:21:19 · 304 阅读 · 0 评论 -
设计模式之观察者模式(Observer)
还是《Game.Programming.Patterns》一书中对观察者模式的个人理解,惯例看一下菜鸟教程的描述: 观察者模式应用的也比较多了,各大框架中的消息/通知/事件(叫法多样),很多就是用的观察者模式,或者在此基础上结合多种设计模式 ··· ··· 实现:玩家在桥上失足掉入河中,达成成就~ (233333) public enum ActorEvent { ...原创 2018-10-25 21:28:17 · 391 阅读 · 0 评论 -
设计模式之原型模式(Prototype)
与之前的享元模式有一些共通之处,享元模式是所有相同对象共享同一份数据,比如森林场景里有大树和树苗,不需要为棵树处理一份数据,因为数据是固定不变的,大树和树苗各有一份原始数据,所有的实体都引用这份数据即可。 而原型模式,是用一份原始数据作为原型,克隆出相同或近似的数据,克隆数据可能会单独处理,但原型不变。比如场景中有普通战士哥布林、射手哥布林、法师哥布林,为每种哥布林创建一个原型,分别利...原创 2018-11-01 21:51:17 · 201 阅读 · 0 评论 -
设计模式之状态模式(State)
状态模式主要用于状态机的设计,更加便利的控制切换对象状态,增强可扩展性和可维护性。状态机不仅适用于角色动作状态,同样适用于其他可以确切划分为相互独立的区间的功能模块。 一、 有限状态机: 又称FSM有限状态机,集合了对象所有的状态,通过外界输入和内部逻辑切换状态,保证同一时间只有一个状态,各状态相互独立,每个状态包含了切入、刷新、切出三部分,配合Unity的Animator使用效果更佳~~...原创 2018-11-04 21:44:38 · 285 阅读 · 0 评论 -
设计模式之单例模式(Singleton)
单例是开发中经常用到的模式(特别是小游戏···),合理的使用单例会使开发更加高效便捷,但过多的使用单例易提高耦合,若非必要应该尽量避免。 如下代码,也可以保证一个类只存在一个实例(多余一个需要手动修改),但不需要做成单例: public class NotSingleton { //保证当前场景最多只存在一个实例,但不需要做成单例 static bool isInstan...原创 2018-11-03 00:20:29 · 216 阅读 · 0 评论