研究War3编辑器(4):触发器与变量
概念在【触发编辑器】里,可以对“触发器”和“变量”进行编辑。他们可以以较为简单的方式来指定游戏中的一些逻辑,而不必写代码。例如,目前可以看到一个名为Melee Initialization的触发器。触发器(Trigger)“触发器”代表了一种逻辑:在特定时机并且满足限定条件下需要进行的一系列操作所谓的 “特定时机” 用事件表示,比如“一个单位的死亡”。所谓的 “限定条件” 用条件表示,是一些附加的
概念
在【触发编辑器】里,可以对“触发器”和“变量”进行编辑。他们可以以较为简单的方式来指定游戏中的一些逻辑,而不必写代码。
例如,目前可以看到一个名为Melee Initialization
的触发器。
触发器(Trigger)
“触发器”代表了一种逻辑:
在特定时机并且满足限定条件下需要进行的一系列操作
- 所谓的 “特定时机” 用
事件
表示,比如“一个单位的死亡”。 - 所谓的 “限定条件” 用
条件
表示,是一些附加的判断,比如比较一个自定义的变量是否大于一个特定的值。它是可选的,并不是必须指定。 - 所谓的 “一系列操作” 用
动作
表示,比如“改变当前的天气”、“设定英雄的等级”等等,可以有多个。
例如,目前在Melee Initialization
这个默认添加的触发器中,可以看到它触发的时机是“Map initialization”即地图初始化时。而它进行了一系列的初始化操作,他们在动作
中可以看到。
变量(Variable)
有时候,想要实现的逻辑其中包含了一些“非固定的量”,例如:我想要让英雄升级到“x级”,但这个“x”是由其他逻辑进行决定的。这时,“x”就是一个变量了。
“变量”对于编程而言是一个基础的概念,而关于它,一个重要的属性就是“作用域”:例如对于一个全局作用域的变量,在任何地方都可以访问,而一个局部作用域的变量,只在一个范围内可见。
在【触发编辑器】这个界面中,添加的变量似乎都属于全局变量,至于局部变量,似乎只存在于在JASS脚本中(此说法参考world-editor-tutorials : Learning Variable Basics)。而关于JASS脚本,目前了解较少,有待后续研究。
实践:添加一个新的触发器
首先,添加一个新的“类别”
新的类别起名为“测试类别”,然后就可以在其中添加“新触发(Trigger)”了。
新的触发器命名为“TestTrigger”,
工具栏的三个按钮分别可以添加新的 事件
、条件
、动作
。添加后的可以在右下侧看到(当前没有任何内容)。
这里打断一下触发器的操作,我需要在地图中新加一个单位作为测试,我是玩家1红色方,这里我需要一个敌对方。因此添加一个“玩家2阵营(蓝色方)”的农民:
然后添加新事件
:
- 类型为
单位 - Specific Unit Event
(特定单位的事件) - 选择这个【单位(Unit)】为刚才创建的农民,而【事件】默认就是“死亡”。
然后添加对应的动作
:
类型为环境 - Create Weather Effect
创建天气效果,而这个效果就是“灰谷大雨”
这样就表示,当这个农民死亡时,会触发下雨的天气特效了。
效果如下:
实践:使用变量
添加一个新的变量:
新变量命名为test
,变量类型是整数
,初始值是7
然后为TestTrigger
添加新的事件:
- 事件类型为
英雄 - Set Level
即给英雄设置等级 - 选择单位为己方的英雄
- 而要升的等级为一个变量,他就是
test
这样的意思是,现在农民死亡之后,不仅会下雨,还会让英雄升级的test
的值(7
)。
效果:
相关资料
world-editor-tutorials : Trigger Basics and Formats
world-editor-tutorials : Learning Variable Basics
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)