unity游戏设计模式——命令模式(自学笔记)

来源:互联网 发布:竞价排名点击软件 编辑:程序博客网 时间:2024/06/05 08:07

在这里我要感谢下Bob Nystrom先生,正是他的书为我的学习做了铺垫。

首先我并非科班出身,我是学建筑的。在先天上有缺陷,虽然读了杂七杂八的书,可是并不能对我有实质性的提升。

在工作中看前辈写的代码,我也知道这些设计模式怎么用,但是很难从里到外的探究。

自从看了许多大佬写的博客之后,我茅塞顿开,学到了好多。在这里写写各位大神的指点,我会把游戏编程模式的笔记一直写下去的。

http://gpp.tkchu.me/这是游戏编程模式的网址。


命令模式:

我并不想再去复述大神们的话,下面就是写出我的理解。

命令=命令的发出者(发出什么命令)——命令的接受者(去做什么事),这两个对象之间有个纽带就是“命令”。Nystrom先生定义是:命令是具现化的方法调用

Nystrom先生和其他大神举的例子都是输入按键的这个例子。

就是在unity中,好多人直接就是为案件绑定事件,比如鼠标左键按下就是发射。实际这并没有什么不好,可是好多用户的体验并不好,因为按键功能已经锁死了。所以命令模式就是在鼠标左键和发射之间设置一个中间层,起一个纽带的作用。

这个纽带可以进行绑定到鼠标左键也可以绑定到鼠标右键上。灵活性可以减低耦合度。


如果理解起来麻烦的话,我就举个例子吧。

A(一家面粉作坊)一直只给b(馒头店)供应面粉。如果b倒闭的话,A的面粉就卖不出去,也会跟着倒闭。现在A要是自己开一家面粉铺子就不一样了,b可以来我铺子买面粉,C也可以来我铺子买面粉。就算B倒闭了,还有D,E……来我这里买面粉。


(比喻有点简陋,要是理解差了,请告知)


当然命令也不可能只有这一部分。写中间层的代码的时候,我们可以把那些命令装入一个集合(栈、或者队列里面吧)。我想这样可以适用那种建造类的技能吧,比如说红警建造解放军、工程师、飞行人,可以把他们的建造命令全都装进一个容器里然后等到CD之后调用。还有一个AI怪物的技能释放

当然会有人说用普通那种就可以啊。当然也没说不可以,只不过这样更加好管理写。当然这样缺点也是有的,加大了类的体积。




原创粉丝点击