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

3.1 KiB
Raw Permalink Blame History

大厅、通知和设置的可选动画

配置方法

在 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 执行:

node node_modules/typescript/bin/tsc -p YouleNexus/tsconfig.json --noEmit --ignoreDeprecations 6.0 --skipLibCheck --lib ES2022,DOM --types node --strict

原始检查入口仍有环境限制:Cocos 内置旧版 TypeScript 不支持工程使用的新语法;未加上述库选项的检查还会报告引擎声明及标准库版本问题。本次未修改这些全局配置。