Adseed 使用文档
事件系统

标签系统

使用标签批量管理和操作组件

标签是 Adseed 事件系统中实现批量控制的核心机制。通过为多个图层分配相同的标签,您可以用一条事件同时控制一组组件,大幅减少重复配置。

什么是标签

标签是附加在图层上的字符串标识(最长 20 个字符)。它的作用是将多个图层归为一组,使事件可以一次性作用于整个分组,而无需为每个图层单独配置。

标签的核心特征:

  • 每个图层最多一个标签 — 一个图层只能分配一个标签,不支持多标签
  • 标签名在作用域内唯一 — 同一作用域中,相同的标签名表示同一分组
  • 标签是可选的 — 大多数图层不需要标签,只有需要批量控制时才需要设置
  • 标签是纯元数据 — 标签不影响组件的外观、行为或渲染性能,它仅用于事件系统的目标选择

标签的作用域

Adseed 中的标签分为两种作用域,分别对应不同的编辑层级。

舞台标签 (Stage Tags)

  • 前缀:tag:
  • 应用于主舞台上的图层
  • 在舞台级别的事件中使用
  • 适用于页面内组件之间的交互逻辑

组件标签 (Component Tags)

  • 前缀:tagComponent:
  • 应用于组件模板内部的图层
  • 在组件内部事件中使用
  • 适用于组件模板内的交互逻辑

前缀由系统自动管理,您只需输入标签名称(例如"button"),系统会根据当前编辑环境自动添加正确的前缀。在舞台上编辑时自动使用 tag: 前缀,在组件模板内编辑时自动使用 tagComponent: 前缀。

作用域隔离规则

  • 舞台标签和组件标签完全独立 — 两者互不影响
  • 相同的标签名可以同时存在于舞台和组件中,不会产生冲突
  • 在同一作用域内,标签名必须唯一 — 如果输入重复的标签名,系统会提示警告
  • 系统还会进行跨组件验证,检测不同组件之间是否存在标签冲突

创建和分配标签

选中目标图层

在画布上单击要设置标签的图层,使其处于选中状态。

打开属性面板

选中图层后,右侧属性面板会自动显示该图层的属性配置。

输入标签名称

在属性面板中找到"标签"输入框,输入您的标签名称。标签名最长 20 个字符,建议使用简洁且有描述性的名称。

确认保存

按下 Enter 键或点击其他区域即可完成保存。标签会立即生效,可在事件系统中使用。

为其他图层设置相同标签

依次选中需要归入同一分组的其他图层,输入相同的标签名。所有拥有相同标签名的图层将被视为一个整体。

建议选择能反映分组用途的标签名。例如,为所有敌人精灵使用"enemy"标签,为所有收集物使用"collectible"标签。清晰的命名有助于后续维护和事件配置。

在事件触发器中使用标签

配置交互事件的触发器(如点击、按下、松开)时,触发源下拉列表中会同时显示单个图层标签(标签会以特殊的标签图标标识)。

当您选择标签作为触发源时:

  • 用户与该标签下的任意一个图层交互都会触发事件
  • 无需为每个图层分别创建事件

示例场景

假设您有 5 张商品图片,全部打上"product"标签:

  1. 创建一个点击交互事件,将触发源设为"product"标签
  2. 点击这 5 张图片中的任意一张,都会触发相同的事件

这同样适用于碰撞事件:您可以将标签设为碰撞源或碰撞目标,实现一组组件的碰撞检测。

在效果执行器中使用标签

配置效果动作时,目标/执行器下拉列表中也会同时显示标签和单个图层。

当您选择标签作为效果目标时:

  • 动作会同时作用于该标签下的所有图层
  • 一条效果定义即可控制多个组件

支持标签目标的效果类型

效果支持标签
显示/隐藏支持
播放/暂停支持
动画效果支持(路径动画除外)
播放序列帧支持
播放 Spine支持
更新属性支持
克隆支持
销毁支持
手指跟随支持
更新锚点不支持
销毁组件实例不支持
延时/跳转/商店不适用

标签与自身引用 (__self)

当事件通过标签触发时,系统能够识别具体是哪个图层被操作。在效果配置中,您可以使用特殊的"__self"(自身)引用来指定"触发本次事件的那个图层"作为目标。

这创造了逐实例行为

  • 触发器应用于所有标签图层 — 任意一个都可以触发
  • 效果使用 __self 时仅作用于被操作的那个具体图层

示例

假设有 10 个星星图层,全部标签为"star":

  1. 交互触发器:点击"star"标签
  2. 效果:隐藏"__self"
  3. 结果:点击某个星星时,只隐藏被点击的那颗星星,而不是全部星星

__self 与标签配合使用威力极大。如果没有这个机制,上面的例子需要为 10 个星星分别创建 10 条事件。而使用标签 + __self,仅需一条事件即可处理所有实例。

实用场景

场景一:批量显隐控制

多个装饰元素需要同时出现或消失:

  1. 为所有装饰元素设置标签"decoration"
  2. 添加一个控制按钮,配置点击事件
  3. 效果:切换"decoration"标签的可见性

一条事件控制所有装饰元素的显隐,增减装饰元素时只需分配标签即可。

场景二:游戏收集物

游戏中有多个可点击的收集物:

  1. 为所有收集物设置标签"collectible"
  2. 交互触发器:点击"collectible"标签
  3. 效果序列:
    • 隐藏 __self(隐藏被点击的收集物)
    • 更新变量 score += 10(加 10 分)
    • 播放收集音效

一条事件处理所有收集物的点击逻辑,每个收集物独立响应。

场景三:批量入场动画

多个元素需要协调播放入场动画:

  1. 为目标元素设置标签"entrance"
  2. 创建自动事件(定时器触发)
  3. 效果:对"entrance"标签执行透明动画(从 0 到 1)

所有标签为"entrance"的元素同时播放淡入效果。

场景四:动态生成与标签

使用"生成组件"效果可以在运行时创建新的组件实例。生成的图层同样可以携带标签,使其自动被已有的标签事件所覆盖。

例如,动态生成带有"enemy"标签的敌人组件,它们会自动参与所有针对"enemy"标签配置的碰撞事件和交互事件。

注意事项

每个图层只能有一个标签。如果一个图层需要参与多个分组,请选择最重要的分组作为标签,其他逻辑可通过单独的事件实现。

  • 标签名最长 20 个字符
  • 标签仅在同一作用域内需要唯一
  • 标签是纯元数据,不影响组件渲染或性能
  • 删除图层时,其标签自动从系统中移除
  • 标签名区分大小写 — "Star"和"star"是两个不同的标签
  • 重命名标签后,所有引用该标签的事件会自动更新

这个页面有帮助吗?

On this page