心灵终结吧 关注:89,498贴子:3,133,313

【触发】关于触发的原理以及对多重关联触发的一些误区

只看楼主收藏回复

触发可以说是一个任务的骨架,然而感觉至今为止绝大部分的战役作者并没有意识到其真正运作的机理,这就导致了一个问题,让单个物体关联多个触发时有可能会出现意料之外的情况。今天我就来抛砖引玉,稍微谈一下我对触发的理解。


IP属地:浙江1楼2017-10-16 19:46回复
    首先,我们需要打破一个历来已久的错误看法,那就是,触发从来没有什么“可重复性”(或者说地编“触发选项”那一栏的类型)。没错,触发本身是不具备有可重复性的,真正与“重复触发”有关的是一个很多作者都不会去碰的东西,那就是“标签”(它的另一个名字是“标记”)。
    现在我们来讲一下触发的本质,当一个“触发”建立完毕后,它包括三部分,触发选项、条件、结果,分别对应地图文件中的Triggers、Events、Actions。重点是,每当一个“触发”被建立,其实都会自动建立一个关联着触发的标签。地图上的一切物体、单元标记,还有小队,其实都不是与触发直接关联,而是与标签关联着,标签就像是连接这些东西与触发之间的纽带。

    注意地编的说法,它说的是关联到“标记/标签”而不是“触发”上。


    IP属地:浙江本楼含有高级字体2楼2017-10-16 19:47
    回复
      2025-06-23 19:20:49
      广告
      触发本质上是一个过程,每个标签(和与它关联的事物)进行着触发的条件判定,假如“条件”满足,那么“结果”里的事就会发生。打个比方,触发就是一扇安检门,标签不断地尝试通过安检门,假如能通过安检(满足条件),那么就能进入其中(达成结果)。
      现在我们来看一下地编里所谓触发的“类型”

      相信这个地方大家应该也编辑过很多次,但我估计很少有人注意到那行小字“修改所有关联标记”。而这个标记其实就是这次要讲的重点——标签的另一个翻译名。假如你翻一翻地图文件,对一下各个参数在触发三个部分的位置,你会发现,触发的任何地方都没有存这么一个“类型”的值。这个值真正存放的位置是在标签里,也就是“标签编辑”里的“重复”。

      用安检门举例,这个“重复”代表着“标签”通过门之后是否会再次返回,继续进行条件判定。假如为0,那么假如它通过“任何”一扇门,那它就再也不会进行任何的条件判定。假如为2,那么即使它通过门,它还是会继续进行“它会进行的”条件判定。
      当你修改触发A的这个“类型”时,你本质上是修改了所有关联着这个A的标签的“重复”,而并没有对触发本身有任何的修改。


      IP属地:浙江3楼2017-10-16 19:48
      回复
        触发关联的原理其实是,让与它关联的标签同时也会尝试进行和它关联的触发的条件判定。说起来比较拗口,用之前的安检门的例子说明的话,假设标签a关联触发A,触发A关联触发B,那么标签a会同时不断尝试经过A、B两扇安监门。


        IP属地:浙江4楼2017-10-16 19:48
        回复
          刚刚讲了很多,相信很多人也许看的是一头雾水,下面我们就来举一个小例子。
          例子:让某事物在开局时改变为所属方A,然后10秒后自毁并弹出文本
          按照帖子里的说法,新建两个触发。
          A触发的类型设为2,关联上B,条件为任何事件,结果是更改所属为US与禁止自身
          B的条件是流逝时间10,结果是摧毁关联物体与文本触发事件,由于它的类型是0,那么我也不需要禁止B了吧?
          现在实际试一下

          开局改变所属√

          10秒后自毁并弹出文本√ 诶为啥多了一条文本?别急,继续看下去,10秒后

          哇,这文本怎么又冒出来了,我明明设置触发B的类型是0啊?
          这里就是传统的“重复触发”说法显示出来的问题了。再次重申一次,可重复的并不是“触发”而是“标签”。虽然触发B的类型是0(即触发B创建时自带的标签的“重复”为0),这也与a过B这扇门没有任何关系,只要满足了“流逝时间10”的条件,a就会通过B这扇门,然后一次结果就会发生,在这个例子里的表现就是每过10秒都会有那条文本出现。


          IP属地:浙江本楼含有高级字体6楼2017-10-16 19:49
          收起回复
            假如你不想(或觉得没必要)了解什么触发的运行机制,那么记住一点就能基本解决在多重关联触发中发生的诡异现象,即“默认多重关联触发组中所有的触发都是‘可重复’的”。
            当然,当你学会使用“标签”之后,你就能用单个触发实现某些看似需要多个触发的功能。
            例子:
            新建触发A,条件是被玩家点击,结果是摧毁关联物体。
            然后手动添加一个标签b,关联到A上,此时关联A的标签共有两个,a与b。
            让a关联建筑p,让b关联建筑q。
            实际试的时候你就会发现,效果是点a,p炸,点b,q炸。
            多重标签法的潜力远不止此,这里我只是稍微举了一个很小的例子。
            本帖到此结束。


            IP属地:浙江本楼含有高级字体8楼2017-10-16 19:50
            收起回复


              IP属地:陕西来自Android客户端9楼2017-10-16 19:53
              回复
                大佬666


                IP属地:河南来自Android客户端10楼2017-10-16 20:05
                回复
                  2025-06-23 19:14:49
                  广告


                  星座王
                  点亮12星座印记,去领取
                  活动截止:2100-01-01
                  去徽章馆》
                  IP属地:北京来自Android客户端11楼2017-10-16 20:14
                  回复


                    IP属地:广东来自iPhone客户端12楼2017-10-16 20:31
                    回复
                      大佬觉得战役没意思了
                      要攻略地图编辑器了么


                      IP属地:广东来自Android客户端14楼2017-10-16 20:49
                      回复
                        萌新表示看不懂


                        IP属地:山西15楼2017-10-16 21:01
                        回复


                          IP属地:浙江来自Android客户端16楼2017-10-16 21:31
                          回复


                            IP属地:辽宁来自Android客户端17楼2017-10-16 21:40
                            回复
                              2025-06-23 19:08:49
                              广告
                              妙!


                              来自Android客户端18楼2017-10-16 21:43
                              收起回复