Composer 不支持时间轴和过渡动画,因其是 Unity SRP 后期处理参数配置工具;实现淡入淡出需用 CSS transition/@keyframes 或 C# 脚本动态修改参数。

Composer 没有时间轴,也不支持设置过渡动画——你真正要找的是 CSS 的 transition 或 @keyframes,不是 Composer。
为什么在 Composer 里找不到时间轴和关键帧
Composer 是 Unity 中 SRP(可编程渲染管线)的后期处理配置工具,它管理的是渲染效果参数(如 Bloom、Color Grading),不处理时间维度的动画。所谓“淡入淡出”在这里只能通过脚本动态修改参数值,但本身无内建时间轴、关键帧或缓动控制。
- 如果你在 Unity 编辑器里看到 “Composer” 标签页,它属于
Volume组件下的 Profile 编辑器,所有参数都是静态快照 - 想让某个后处理效果(比如雾效强度)随时间变化,必须用 C# 脚本调用
VolumeParameter并配合.value Coroutine或Time.deltaTime手动插值 - 误把 After Effects 当作 Composer,是搜索时最常发生的混淆——AE 里的时间轴、Opacity 关键帧、Easy Ease 都和 Composer 完全无关
CSS 中实现淡入淡出必须写对 transition
90% 的“动画不触发”问题,源于 transition 声明不完整或初始状态缺失。
- 必须显式声明属性:
transition: opacity 0.3s ease;,不能写transition: all 0.3s ease;——后者会让 margin、color 等意外参与动画,导致跳变或延迟 - 元素初始
opacity必须明确设为0或1,否则浏览器无法确定起始值,动画静默失败 - 禁止和
display: none混用:一旦display为none,元素脱离渲染树,transition直接失效 - 移动端 Safari 在某些滚动场景下会掉帧,建议加
will-change: opacity;或transform: translateZ(0);触发合成层
JS 控制淡入淡出时 class 切换的时机很关键
直接同步设置 class 后立刻读取/修改 opacity,浏览器来不及触发 transition。
- 正确做法是用
element.classList.add('fade-in'),然后靠 CSS 自动响应 - 如果需要 JS 监听动画结束,绑定
transitionend事件,而不是用setTimeout猜时长 - 淡出后若要彻底释放空间或禁用交互,应在
transitionend回调里设置visibility: hidden和pointer-events: none,不能只靠opacity: 0 - 避免在
requestAnimationFrame外部高频修改样式,否则可能触发强制同步重排
真正容易被忽略的点是:opacity 动画生效的前提,不是“写了动画”,而是“元素始终在渲染树中且属性可被浏览器追踪”。display、overflow、transform-style、will-change 这些看似无关的属性,任何一个配错,都会让淡入淡出彻底静音。











