修改玩家变量(事件玩家, 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级 , 但因为我们没有循环 , 玩家升了一级就结束了 , 并且后续增加经验 , 也不会再触发升级 。只有当条件满足被打破时 , 条件再次满足 , 才会再次触发该规则 。

模拟函数调用
编程总是免不了函数 , 但目前为止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, 假)
注意:这里只是模拟函数调用 , 但实际上它比函数还是少很多东西 。因此 , 并不是所有情况都适合这样写 。

总结
本文其实并没有用什么很稀奇古怪的技术 , 但本文的难点是思路的转变:你需要将几个本来不相同的逻辑 , 找出他们的共同点 , 并巧妙的将其拆分成多个逻辑 , 然后用规则来实现 。
到底要不要使用这种方式来设计规则?你需要考虑它的优缺点 。
优点有:将重复的内容独立出来 , 减少工作量 , 方便以后的修改(不仅需要修改的地方少了 , 漏改的可能性也更小了) 。
推荐阅读
- 守望先锋键盘弹钢琴攻略 守望先锋地图工坊键盘弹钢琴代码分享
- 守望先锋地图工坊warframe战甲技能代码分享 守望先锋星际战甲玩法攻略
- 守望先锋地图工坊传火玩法代码分享 守望先锋地图工坊传火怎么玩
- 守望先锋赞赏等级有什么用 守望先锋赞赏等级奖励介绍
- 守望先锋回放系统介绍 守望先锋回放怎么看
- 守望先锋地图工坊路霸的娃娃机是什么 地图工坊娃娃机玩法
- 守望先锋回放怎么看 守望先锋回放功能介绍
- 守望先锋天使垂直飞按键介绍 守望先锋天使垂直飞技巧分享
- 守望先锋副坦有哪些 守望先锋副坦作用分析_网
- 守望先锋铁拳怎么克制 守望先锋反制铁拳方法介绍_网
