标签系统
使用标签批量管理和操作组件
标签是 Adseed 事件系统中实现批量控制的核心机制。通过为多个图层分配相同的标签,您可以用一条事件同时控制一组组件,大幅减少重复配置。
什么是标签
标签是附加在图层上的字符串标识(最长 20 个字符)。它的作用是将多个图层归为一组,使事件可以一次性作用于整个分组,而无需为每个图层单独配置。
标签的核心特征:
- 每个图层最多一个标签 — 一个图层只能分配一个标签,不支持多标签
- 标签名在作用域内唯一 — 同一作用域中,相同的标签名表示同一分组
- 标签是可选的 — 大多数图层不需要标签,只有需要批量控制时才需要设置
- 标签是纯元数据 — 标签不影响组件的外观、行为或渲染性能,它仅用于事件系统的目标选择
标签的作用域
Adseed 中的标签分为两种作用域,分别对应不同的编辑层级。
舞台标签 (Stage Tags)
- 前缀:
tag: - 应用于主舞台上的图层
- 在舞台级别的事件中使用
- 适用于页面内组件之间的交互逻辑
组件标签 (Component Tags)
- 前缀:
tagComponent: - 应用于组件模板内部的图层
- 在组件内部事件中使用
- 适用于组件模板内的交互逻辑
前缀由系统自动管理,您只需输入标签名称(例如"button"),系统会根据当前编辑环境自动添加正确的前缀。在舞台上编辑时自动使用 tag: 前缀,在组件模板内编辑时自动使用 tagComponent: 前缀。
作用域隔离规则
- 舞台标签和组件标签完全独立 — 两者互不影响
- 相同的标签名可以同时存在于舞台和组件中,不会产生冲突
- 在同一作用域内,标签名必须唯一 — 如果输入重复的标签名,系统会提示警告
- 系统还会进行跨组件验证,检测不同组件之间是否存在标签冲突
创建和分配标签
选中目标图层
在画布上单击要设置标签的图层,使其处于选中状态。
打开属性面板
选中图层后,右侧属性面板会自动显示该图层的属性配置。
输入标签名称
在属性面板中找到"标签"输入框,输入您的标签名称。标签名最长 20 个字符,建议使用简洁且有描述性的名称。
确认保存
按下 Enter 键或点击其他区域即可完成保存。标签会立即生效,可在事件系统中使用。
为其他图层设置相同标签
依次选中需要归入同一分组的其他图层,输入相同的标签名。所有拥有相同标签名的图层将被视为一个整体。
建议选择能反映分组用途的标签名。例如,为所有敌人精灵使用"enemy"标签,为所有收集物使用"collectible"标签。清晰的命名有助于后续维护和事件配置。
在事件触发器中使用标签
配置交互事件的触发器(如点击、按下、松开)时,触发源下拉列表中会同时显示单个图层和标签(标签会以特殊的标签图标标识)。
当您选择标签作为触发源时:
- 用户与该标签下的任意一个图层交互都会触发事件
- 无需为每个图层分别创建事件
示例场景
假设您有 5 张商品图片,全部打上"product"标签:
- 创建一个点击交互事件,将触发源设为"product"标签
- 点击这 5 张图片中的任意一张,都会触发相同的事件
这同样适用于碰撞事件:您可以将标签设为碰撞源或碰撞目标,实现一组组件的碰撞检测。
在效果执行器中使用标签
配置效果动作时,目标/执行器下拉列表中也会同时显示标签和单个图层。
当您选择标签作为效果目标时:
- 动作会同时作用于该标签下的所有图层
- 一条效果定义即可控制多个组件
支持标签目标的效果类型
| 效果 | 支持标签 |
|---|---|
| 显示/隐藏 | 支持 |
| 播放/暂停 | 支持 |
| 动画效果 | 支持(路径动画除外) |
| 播放序列帧 | 支持 |
| 播放 Spine | 支持 |
| 更新属性 | 支持 |
| 克隆 | 支持 |
| 销毁 | 支持 |
| 手指跟随 | 支持 |
| 更新锚点 | 不支持 |
| 销毁组件实例 | 不支持 |
| 延时/跳转/商店 | 不适用 |
标签与自身引用 (__self)
当事件通过标签触发时,系统能够识别具体是哪个图层被操作。在效果配置中,您可以使用特殊的"__self"(自身)引用来指定"触发本次事件的那个图层"作为目标。
这创造了逐实例行为:
- 触发器应用于所有标签图层 — 任意一个都可以触发
- 效果使用 __self 时仅作用于被操作的那个具体图层
示例
假设有 10 个星星图层,全部标签为"star":
- 交互触发器:点击"star"标签
- 效果:隐藏"__self"
- 结果:点击某个星星时,只隐藏被点击的那颗星星,而不是全部星星
__self 与标签配合使用威力极大。如果没有这个机制,上面的例子需要为 10 个星星分别创建 10 条事件。而使用标签 + __self,仅需一条事件即可处理所有实例。
实用场景
场景一:批量显隐控制
多个装饰元素需要同时出现或消失:
- 为所有装饰元素设置标签"decoration"
- 添加一个控制按钮,配置点击事件
- 效果:切换"decoration"标签的可见性
一条事件控制所有装饰元素的显隐,增减装饰元素时只需分配标签即可。
场景二:游戏收集物
游戏中有多个可点击的收集物:
- 为所有收集物设置标签"collectible"
- 交互触发器:点击"collectible"标签
- 效果序列:
- 隐藏 __self(隐藏被点击的收集物)
- 更新变量 score += 10(加 10 分)
- 播放收集音效
一条事件处理所有收集物的点击逻辑,每个收集物独立响应。
场景三:批量入场动画
多个元素需要协调播放入场动画:
- 为目标元素设置标签"entrance"
- 创建自动事件(定时器触发)
- 效果:对"entrance"标签执行透明动画(从 0 到 1)
所有标签为"entrance"的元素同时播放淡入效果。
场景四:动态生成与标签
使用"生成组件"效果可以在运行时创建新的组件实例。生成的图层同样可以携带标签,使其自动被已有的标签事件所覆盖。
例如,动态生成带有"enemy"标签的敌人组件,它们会自动参与所有针对"enemy"标签配置的碰撞事件和交互事件。
注意事项
每个图层只能有一个标签。如果一个图层需要参与多个分组,请选择最重要的分组作为标签,其他逻辑可通过单独的事件实现。
- 标签名最长 20 个字符
- 标签仅在同一作用域内需要唯一
- 标签是纯元数据,不影响组件渲染或性能
- 删除图层时,其标签自动从系统中移除
- 标签名区分大小写 — "Star"和"star"是两个不同的标签
- 重命名标签后,所有引用该标签的事件会自动更新
这个页面有帮助吗?