跳到主要内容

过滤器及单位筛选函数用法

标签是可分配给一个或多个游戏对象的参考词。例如,建筑单位含有“单位”和“建筑”标签,死亡的敌方单位含有“死亡”和“敌方”标签。

过滤器是用来给搜索效果和弹道碰撞做静态判定的字段,可以用过滤器判断目标单位与基准单位的关系,并进行筛选。

在数编中可以定义单位的自定义搜索过滤属性。

以近战英雄样例为例,该单位含有“单位”,“英雄”两个标签。如果去除"单位"这个标签,则设置为“需要:单位”的搜索效果和弹道碰撞就会忽略这个单位,因为它没有这个标记。反之,对于“不包括:单位”的弹道碰撞和搜索效果,拥有“单位”标记的对象也会被忽略。

注意这些标记不影响单位自身的运作,它们相互之间是平权的。拥有“英雄”自定义过滤不会使单位自动地拥有英雄的属性。可以在数据编辑器的“自定义常量”处增删这些标记。

但作为最佳实践,不建议轻易去除普通单位和英雄单位身上的“单位”标记。因为新建的搜索效果和碰撞单位弹道效果如果不经修改,其默认过滤“需要:单位”(可修改)。

创建过滤器

使用目标过滤窗口创建

添加触发语句『单位过滤器』

双击右侧的筛选标签,弹出如下目标过滤窗口:

过滤器会对每个标签赋予“必须”、“允许”、“不包括”其中的一个属性。“必须”指通过该标签的所有单位,“不包括”指不通过该标签的所有单位,如果过滤器中不包含“必须”标签,则查找所有“允许”标签的单位。

使用字符串创建

添加触发语句『通过字符串构建单位过滤器』

在参数中填写对应的过滤器字符串。用逗号分隔两个标签,分号前的标签均为“必须”属性,分号后为“不包括”属性,不必填写“允许”属性的标签,格式样例为:标签1,标签2;标签3,标签4。

例:通过单位和建筑的标签,不通过死亡标签,具体的过滤器字符串为:单位,建筑;死亡。

使用数编单位过滤字段创建

数编中使用的过滤器也可以在触发中使用,通过添加触发语句『通过数编单位过滤字段构建』,并选择对应的数编过滤器即可实现。

使用过滤器筛选特定的单位(组)

下面将结合一个具体例子说明单位筛选函数的用法。

场景中存在一个矩形区域,该区域内含有建筑(防御塔)、敌方单位(狼人、爬虫)以及若干物品单位。

例1:在此区域内筛选出所有建筑单位

输出信息:

{unit|生物|$$default_units_ts.unit.防御塔-单体减速塔_1.root-1}

{unit|生物|$$default_units_ts.unit.防御塔-单体减速塔_1.root-2}

例2:在此区域内筛选出所有远程单位

输出信息:

{unit|生物|$$default_units_ts.unit.爬虫.root-1}

{unit|生物|$$default_units_ts.unit.爬虫.root-2}