首页/ 第 12 章 · 特效与粒子/ 第 196 课
LESSON 196 · 特效与粒子

屏幕空间特效(特效进阶)

屏幕特效已掌握。下一课综合特效制作。

⏱ 约 14 分钟📊 难度:入门🗂 第 12 章 · 特效与粒子📍 第 196 / 300 课
课程进度
196 / 300

🎯本节学习目标

  • 实现受伤红屏
  • 实现全屏闪烁
  • 实现黑白效果

🚀课程导读

“受伤屏幕变红”“被击中闪白”——全屏特效增强反馈。本课用 UI 与后期组合实现。

受伤红屏与全屏闪

屏幕级反馈。

  1. 【受伤红屏】Canvas 顶层全屏 Image(红色、半透明、锚点拉伸),默认 Alpha 0。
  2. 【脚本 DamageFlash】
  3. public Image redScreen; // 全屏红色
  4. public float flashTime = 0.2f;
  5. public void FlashRed() { StartCoroutine(Flash()); }
  6. IEnumerator Flash() {
  7. redScreen.color = new Color(1, 0, 0, 0.6f);
  8. while (redScreen.color.a > 0f) {
  9. Color c = redScreen.color; c.a -= Time.deltaTime / flashTime; redScreen.color = c;
  10. yield return null;
  11. }
  12. }
  13. 【调用】玩家受伤时:damageFlash.FlashRed();
  14. 【白色闪】同理用白色 Image 做“被击中/闪光弹”全屏白。
  15. 【注意】全屏 Image 要在最上层(Hierarchy 最后),Block Raycast 可关。
  16. 【性能】全程只改颜色 alpha,零开销。
💡
受伤红屏 = 全屏半透明 Image + 协程淡出。一行调用、即时反馈。

黑白滤镜与低速时间

“濒死/慢动作”感。

  1. 【黑白】用 Volume 的 Color Adjustments:Saturation 拖到 -100 = 黑白。
  2. 脚本控制饱和度:
  3. public Volume volume; ColorAdjustments ca;
  4. void Start() { volume.profile.TryGet(out ca); }
  5. public void SetGrayscale(float s) { ca.saturation.value = s; }
  6. 【低速时间】濒死/慢动作:Time.timeScale = 0.3f(第 162 课),配合降饱和营造“危险”感。
  7. 【组合应用】血量低时:闪红 + 渐变黑白 + 心跳声。
  8. 【屏幕震动】配合第 198 课 Camera Shake,反馈更强烈。
  9. 【其他全屏特效】
  10. 被冰冻:蓝色全屏 Image + 缓慢淡入。
  11. 毒:绿色边缘。
  12. 【注意】后期效果要“可恢复”:结束后把饱和/时间调回正常。
  13. 【完整】做“低血量警告”系统:血<30% 时屏幕边缘泛红 + 呼吸闪烁。
  14. 【验证】扣血、濒死、恢复全程测试。
  15. 【完成】屏幕特效让游戏“会说话”。
屏幕特效 = 全屏 Image(闪红/白)+ 后期调参(黑白)+ timeScale(慢动作)。反馈拉满。

常见错误与排查

错误:红屏一直不消失?
原因:协程被中断或 Alpha 没减到 0
解决:确认协程正确执行;减到 0 后设 color.a=0 兜底。

动手练习

课后小任务(做出来才算真的学会)

  • 实现受伤红屏闪烁
  • 实现低血黑白渐变
  • 结合慢动作做“濒死”效果

本节小结

屏幕特效已掌握。下一课综合特效制作。

完成打卡后,主站会实时更新你的学习进度 🎯

← 上一课后期处理 Post Processing