之前我们为大家带来了守望先锋地图工坊的零基础入门教程,而今天,为大家带来的是玩家“泷涯”编写的守望先锋地图工坊进阶教程,一起来看看吧。 推荐阅读: 守望先锋地图工坊零基础入热门手游网专注打造最新最快最火爆的游戏推荐下载平台,为你推荐最棒的好游戏,为广大游戏玩家们提供精致的完美游戏生活。
当前位置:热门手游网 > 游戏攻略 > 《守望先锋》地图工坊应用观察者模式思想教程 地图工坊进阶教程

《守望先锋》地图工坊应用观察者模式思想教程 地图工坊进阶教程

类目:游戏攻略 围观: 次 更新时间:2019-05-31

之前我们为大家带来了 守望先锋 地图工坊的零基础入门教程,而今天,为大家带来的是玩家“泷涯”编写的守望先锋地图工坊进阶教程,一起来看看吧。

《守望先锋》地图工坊应用观察者模式思想教程 地图工坊进阶教程

推荐阅读:

守望先锋地图工坊零基础入门新手教程

守望先锋地图工坊应用观察者模式思想教程

本文的目标对象,是已经有一定地图工坊编写经验的朋友。如果你并不熟悉,建议你阅读其他教程。

引言​

相对于一门编程语言来说,地图工坊的功能其实非常基础。它没有函数,更别提类了。不过,不知道你是否注意到,持续事件有一个特性:它可以持续等待,直到条件为真。

编程里面有一个“设计模式”,叫做“观察者模式”。它的意思是:当一个对象变化时,会自动通知依赖它的对象。

看到这里,不知道你有没有觉得,持续事件和观察者模式是有一定相似之处的:它们都是在“等”一个东西。

简化规则

这个东西有什么用?我们可以借此来简化规则的编写。例如,我们要做一个等级系统,当经验达到100的时候就升一级,死亡的时候就掉50%经验,如果经验是负了,就掉一级。

我们的经验来源可能不止一种,例如在RPG模式里,我们击杀敌人可以获得经验,摧毁防御塔也可以获得经验。当我们用传统办法写规则的时候,我们就需要:

1.击杀敌人:增加经验,如果经验>100,增加等级,修改等级BUFF

2.摧毁防御塔:增加经验,如果经验>100,增加等级,修改等级BUFF

3.死亡:减少经验,如果经验<0,减少等级,修改等级BUFF

你有没有觉得,这是一个繁琐的过程?当你需要修改等级BUFF的时候,你需要修改很多条规则。

我们再分析一下我们的逻辑:实际上,等级什么时候会增加,增加会有什么效果,这并不是我们的“死亡”事件该处理的。

正确的做法是:有一个东西在“看着”经验,当它大于100时,就代表 升级 了。当它小于100时,就代表降级了。我们将其解耦后,规则就变成了:

1.击杀敌人:增加经验

2.摧毁防御塔:增加经验

3.死亡:减少经验

4.观察者1:如果经验>100,增加等级,修改等级BUFF

5.观察者2:如果经验<0,减少等级,修改等级BUFF

《守望先锋》地图工坊应用观察者模式思想教程 地图工坊进阶教程

换做游戏内规则,即是:(假设用玩家变量A表示等级,玩家变量B表示经验)

1.击杀敌人:修改玩家变量(事件玩家, B, 加, 50)

2.摧毁防御塔:修改玩家变量(事件玩家, B, 加, 30)

3.死亡:修改玩家变量(事件玩家, B, 减, 50)

守望先锋相关攻略《守望先锋》 剧情 分析攻略:守望先锋世界现状《守望先锋》好莱坞防守方怎么打? 英雄阵容推荐《守望先锋》快速升级方法 怎么快速提升等级《守望先锋》巴黎钢琴弹小星星攻略 新地图巴黎钢琴怎么弹《守望先锋》巴蒂斯特英雄故事 巴蒂斯特背景故事介绍《守望先锋》巴蒂斯特技能介绍 巴蒂斯特技能一览《守望先锋》巴蒂斯特技能分析 巴蒂斯特技能数据一览《守望先锋》2月28日PTR更新内容 2月28日测试服更新了什么《守望先锋》PTR麦克雷大招伤害更新 PTR麦爹午时伤害变化《守望先锋》巴蒂斯特常见问题汇总 巴蒂斯特技能特效介绍

观察者1

1.事件:持续 - 每名玩家

2.条件:玩家变量(事件玩家, B) >= 100

3. 动作

修改玩家变量(事件玩家, B, 减, 100)

修改玩家变量(事件玩家, A, 加, 1)

// 这里写等级变化的逻辑

等待(0.016, 无视条件)

如条件为“真”则循环

《守望先锋》地图工坊应用观察者模式思想教程 地图工坊进阶教程

观察者2

1.事件:持续 - 每名玩家

2.条件:玩家变量(事件玩家, B) < 0

3.动作:

修改玩家变量(事件玩家, B, 加, 100)

修改玩家变量(事件玩家, A, 减, 1)

// 这里写等级变化的逻辑

等待(0.016, 无视条件)

如条件为“真”则循环

注意:

一定要注意逻辑设计上不能存在死循环,例如上面的例子里,观察者2的条件不能写“玩家变量 <= 0”。因为当玩家经验=100时,观察者1会将其变为0,就会触发观察者2。而观察者2又会再次触发观察者1。这就导致了死循环的出现。

我们在两个观察者最后都加上了循环,目的是打破条件满足的情况。考虑这种情况:当我们一次性给玩家增加300点经验时,按理来说,应该让玩家升3级,但因为我们没有循环,玩家升了一级就结束了,并且后续增加经验,也不会再触发升级。只有当条件满足被打破时,条件再次满足,才会再次触发该规则。

《守望先锋》地图工坊应用观察者模式思想教程 地图工坊进阶教程

守望先锋相关攻略《守望先锋》剧情分析攻略:守望先锋世界现状《守望先锋》好莱坞防守方怎么打? 英雄阵容推荐《守望先锋》快速升级方法 怎么快速提升等级《守望先锋》巴黎钢琴弹小星星攻略 新地图巴黎钢琴怎么弹《守望先锋》巴蒂斯特英雄故事 巴蒂斯特背景故事介绍《守望先锋》巴蒂斯特技能介绍 巴蒂斯特技能一览《守望先锋》巴蒂斯特技能分析 巴蒂斯特技能数据一览《守望先锋》2月28日PTR更新内容 2月28日测试服更新了什么《守望先锋》PTR麦克雷大招伤害更新 PTR麦爹午时伤害变化《守望先锋》巴蒂斯特常见问题汇总 巴蒂斯特技能特效介绍

模拟 函数调用

编程总是免不了函数,但目前为止OW中没有函数。但是,我们可以使用上面的方法,来模拟函数。

还是用上面的例子。你会发现我们的等级变化逻辑还是写了两遍。我们能不能再将其独立成一个规则?当然是可以的。我们变化的目标是玩家,因此我们需要使用一个玩家变量,来标记我们需不需要对此玩家执行等级变化逻辑。假设我们使用玩家变量C。

首先,在游戏初始化的时候,将其设置为假。我们的规则就可以变成:

观察者1

1.事件:持续 - 每名玩家

2.条件:玩家变量(事件玩家, B) >= 100

3.动作:

修改玩家变量(事件玩家, B, 减, 100)

修改玩家变量(事件玩家, A, 加, 1)

等待(0.016, 无视条件)

如条件为“真”则循环

设置玩家变量(事件玩家, C, 真)

《守望先锋》地图工坊应用观察者模式思想教程 地图工坊进阶教程

观察者2

1.事件:持续 - 每名玩家

2.条件:玩家变量(事件玩家, B) < 0

3.动作:

修改玩家变量(事件玩家, B, 加, 100)

修改玩家变量(事件玩家, A, 减, 1)

等待(0.016, 无视条件)

如条件为“真”则循环

设置玩家变量(事件玩家, C, 真)

等级变化规则

1.事件:持续 - 每名玩家

2.条件:玩家变量(事件玩家, C) == 真

3.动作:

// 这里写等级变化的逻辑

设置玩家变量(事件玩家, C, 假)

注意:这里只是模拟函数调用,但实际上它比函数还是少很多东西。因此,并不是所有情况都适合这样写。

《守望先锋》地图工坊应用观察者模式思想教程 地图工坊进阶教程

总结

本文其实并没有用什么很稀奇古怪的技术,但本文的难点是思路的转变:你需要将几个本来不相同的逻辑,找出他们的共同点,并巧妙的将其拆分成多个逻辑,然后用规则来实现。

到底要不要使用这种方式来设计规则?你需要考虑它的优缺点。

优点有:将重复的内容独立出来,减少工作量,方便以后的修改(不仅需要修改的地方少了,漏改的可能性也更小了)。

它也有缺点:增加了规则数量,增加了逻辑上的复杂度,运行效率稍低。

个人认为,适当的使用这种思路来设计规则,可以减少你的工作量和维护难度。但并不代表这种方式一定就是最好的,你应当考虑你的实际情况。

作者:热门手游网

最新手机游戏

相关资讯

相关游戏

© 热门手游网 版权所有 SiteMap | 游戏库