Files
youle_cocos/docs/superpowers/reports/2026-09-07-optional-ui-animation.md
T

36 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 大厅、通知和设置的可选动画
## 配置方法
在 Cocos Creator 中打开对应 prefab,选择目标节点。
- 大厅和通知节点已经挂好 `Animation` 与 `OptionalUiAnimation`。把制作好的片段拖到 `Animation` 的 **Default Clip**,片段的 **Wrap Mode** 决定单次或循环播放。保持 **Play On Load** 关闭,由组件在节点显示时播放、隐藏时停止,再显示时重新开始。未指定 Default Clip 时保持原来的静态表现。
- 设置开关已经挂好 `Animation` 与 `OptionalSwitchAnimation`。把片段分别拖到后者的 **开启片段**、**关闭片段**。两个字段各自可空;缺少该方向的片段时立即切换图片。开关过渡只播一次,完成、隐藏或被反向切换时,状态图片服从最新开关状态。
- 片段以当前节点为绑定根。Sprite 换帧轨道绑定当前节点的 `cc.Sprite.spriteFrame`。制作位移等轨道时,要考虑节点现有 Widget 对布局的约束。
## 已配置范围
- `Layer4_MainMenu`:Spirit479、Spirit3120、Spirit76、Spirit11、Spirit12、Spirit14、Spirit17、Spirit13、Spirit7。
- `Layer8_Notice`:Spirit3121、Spirit3017、Spirit5、Spirit235、Spirit604、Spirit3057、Spirit15。
- `Layer609_Setting`:音乐底、音效底、Spirit357、Spirit388。
Spirit479 已指定 `assets/framework/ui/animations/AnnouncementHorn.anim`:沿用原有两张喇叭图片,2 秒循环,在 0.5 秒切到第二张、1 秒切回第一张。`AnnouncementView` 继续负责公告文字移动,喇叭换帧由片段负责。
其余节点暂未制作或指定新片段,保持当前表现。音乐和音效已接入状态切换动画;Spirit357、Spirit388 仍保留“原生震动与语音开关尚未接入”的提示,仅预留动画组件。以后业务接通时,由状态拥有方调用 `setState(on, stateFrame, animate)`;初始化用 `animate=false`,用户切换用 `true`。
## 验证
`cocoscreator_projects/scripts/verify-optional-animation-preview.mjs` 在 Cocos Game View 中执行,使用真实 Animation 组件和独立测试节点,检查资源接线、无片段静态表现、显隐重播、喇叭帧序列、开关中断及实际音乐/音效点击与再次打开。测试使用独立的存储键并在结束时恢复。
三个 prefab 通过 Cocos MCP 序列化及 asset-db 保存,原节点 prefab fileId、布局和原有组件属性保留;新组件获得独立 fileId。
2026-09-07 验证结果:Game View 44 项检查通过,期间无警告或错误;三个 prefab 的资源引用检查通过,缺失引用为 0;公告、大厅菜单和登录动画的 10 项既有测试通过,导入边界检查通过。
工程脚本严格类型检查通过,命令在 `cocoscreator_projects` 执行:
```powershell
node node_modules/typescript/bin/tsc -p YouleNexus/tsconfig.json --noEmit --ignoreDeprecations 6.0 --skipLibCheck --lib ES2022,DOM --types node --strict
```
原始检查入口仍有环境限制:Cocos 内置旧版 TypeScript 不支持工程使用的新语法;未加上述库选项的检查还会报告引擎声明及标准库版本问题。本次未修改这些全局配置。