一个简单的黑屏动画,用于2D项目,效果类似慢眨眼、进/出房间时切换场景的衔接过渡。

这种效果的实现方式其实蛮多的,我能想到的包括用shader,用一张全黑Sprite覆盖屏幕,或者直接做成一个UI。

(最近学了一些UnityShader,所以首先想到的方式是用画面“后处理”的方式写一个shader挂在Camera上,可以用公开的参数调节亮度,亮度降到0就是一个黑屏的效果。但不确定这种方式对于性能上是更优还是会增加额外的负担,所以还是舍弃了这种做法。)

这里记录一个最为简单的方式,就是用一张全黑的Sprite覆盖屏幕,将它挂在Camera下面。

因为在我当前的项目中,Camera是移动的,角色进入房间、离开房间回到场景时,使用黑屏动画过渡两个场景。挂在camera下面,就自动跟随Camera移动了,调出来的时候不需要额外去设置Position。(偷懒!)当然也可以不这么做:D

代码比较简单,优点是:渐入渐出的曲线形状、动画播放速度可以随意调节,而且主要代码就是十几行。

颜色也可以自行设置,黑屏白屏都可以。黑屏适合切换场景,白屏可以用做一些闪回之类的的效果。

先放代码,后面说明。

完整代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;//黑屏,用一张全黑图片覆盖屏幕,调整透明度使用curve。
public class BlackScreen : MonoBehaviour
{public SpriteRenderer spriteRenderer;//覆盖屏幕的一张全黑图片,我选择挂在Camera下面,这样做如果相机是移动的就很方便public AnimationCurve curve; //在Inspector上调整自己喜欢的曲线[Range(0.5f, 2f)]public float speed = 1f; //控制渐入渐出的速度private void Awake(){if (spriteRenderer == null) spriteRenderer = GetComponent<SpriteRenderer>();}//开启自动播放黑屏private void OnEnable(){StartCoroutine(Black());}Color tmpColor; //用于传递颜色的变量public IEnumerator Black(){float timer = 0f;tmpColor = spriteRenderer.color;do{timer += Time.deltaTime;SetColorAlpha(curve.Evaluate(timer * speed));yield return null;} while (tmpColor.a > 0);gameObject.SetActive(false);}//通过调整图片的透明度实现渐入渐出void SetColorAlpha(float a){tmpColor.a = a;spriteRenderer.color = tmpColor;}
}

需要说明的点不多,就是通过调整黑屏图片的透明度来实现动画。

  • 用AnimationCurve 来自定义渐入渐出的曲线,Speed设置速度。

  • 用SetColorAlpha()方法用来设置全黑图片的透明度。

  • 在协程中做透明度的渐变,这里我直接把StartCoroutine(Black()) 放在OnEnable()中了(也是为了偷懒!),这样就可以平时隐藏黑屏对象,需要的时候直接SetActive它就会自动播放黑屏动画了。当然也可以把StartCoroutine(Black())放在一个公开的方法里,供外部随时调用。

对象

把脚本挂在空对象上,添加一个Sprite Renderer组件,用一张纯黑或纯白图片,大小调整为覆盖屏幕即可。如下:

  • Curve控制透明度0到1再回到0的动画节奏,可按需自行调节。

  • Speed可以控制播放的速度。

层级

在我的项目中,摄像机是移动的。为了方便随时可以播放黑屏动画,我把该对象挂在Camera下面,

设置为隐藏(GameObject.SetActive(false))。

需要播放黑屏动画时,SetActive(true)即可自动播放,播放完成将会再次隐藏。

【Unity】渐入渐出的黑屏(白屏)过场动画最简单的实现相关推荐

  1. matlab 柱面投影,图像拼接(不投影到柱面)(渐入渐出融合) matlab程序

    1,先拍摄一组图片,比如两幅图:A.B 我直接用网上的两幅图: 2,分别投影到柱面坐标系 就用自己写的柱面投影程序 matlab里 结果: 3,开始配准第一步:SIFT得到匹配对(直接用OpenCV里 ...

  2. 图像拼接(不投影到柱面)(渐入渐出融合) matlab程序

    1,先拍摄一组图片,比如两幅图:A.B 我直接用网上的两幅图: 2,分别投影到柱面坐标系 就用自己写的柱面投影程序 matlab里 结果: 3,开始配准第一步:SIFT得到匹配对(直接用OpenCV里 ...

  3. unity2D:对话框Dialog——弹出、渐入渐出

    注:该文为学习笔记,具体请看b站upMichael-Studio的unity教程2D入门:13敌人Enemy! 环境:unity2020.3 本章目标:制作游戏中的弹出窗口 Panel 对话框肯定是一 ...

  4. 微信小程序-实现元素渐入渐出动画效果-封装方法

    开端 之前一直使用堪称"万能"的jQuery处理用户交互的动画,近日开发微信小程序,微信小程序高度限制的语法和功能使开源函数可谓对其"无能为力". 那没办法,只 ...

  5. Taro React组件使用(1) —— Overlay 遮罩层【渐入渐出动画遮罩层】

    Overlay 遮罩层 提供一个简单的 Overlay 遮罩层,在页面上的层级为 1026; 1. 使用指南 在 Taro 文件中引入组件,将组件放入src下的components文件夹中 impor ...

  6. 图像拼接(一):柱面投影+模板匹配+渐入渐出融合

    这种拼接方法的假设前提是:待拼接的两幅图像之间的变换模型是平移模型,即两幅图像同名点位置之间只相差两个未知量:ΔxΔx 和ΔyΔy,自由度为2,模型收得最紧.所以只有所有图像都是用同一水平线或者同一已 ...

  7. MASM32编程实现窗口渐入渐出效果

    因为工作太忙,好久没写程序代码了,不过编写程序的乐趣令我乐此不疲. 天天跟电脑打交道,一忙起来就忘了休息,弄得眼睛都花了~ 为了保护眼睛,偶决定写一个定时强制休息的程序~ 虽然现在这类程序已有不少,不 ...

  8. 图像拼接(二):柱面投影+模板匹配+渐入渐出融合(GPU版)

    本篇博客的代码修改自图像拼接(一):柱面投影+模板匹配+渐入渐出融合.新的代码充分利用了OpenCV库函数的GPU版本.在一些方法中使用了GpuMat这一数据结构,它是Mat的替代.Mat运行在CPU ...

  9. Android 启动APP时黑屏白屏的三个解决方案

    Android 启动APP时黑屏白屏的三个解决方案 参考文章: (1)Android 启动APP时黑屏白屏的三个解决方案 (2)https://www.cnblogs.com/liqw/p/42634 ...

最新文章

  1. Mac下使用ABTestingGateway快速搭建灰度网关
  2. 2021-04-28 Python可视化图表生成-Matplotlib绘图
  3. 中国已消失的九所世界级大学
  4. MYSQL优化---hidba
  5. Windows server 2003 CA配置(一)
  6. 错误计算机怎么打开,电脑开机出错怎么回事
  7. svg 折线添加新的折点
  8. 输入输出数组元素的函数重载_C ++函数重载| 查找输出程序| 套装3
  9. python 3.7 replace函数的坑
  10. 【PostgreSQL-9.6.3】分区表
  11. 红包随机分配问题php,自己写仿微信红包的随机分配,为什么平均数差距这么大?...
  12. 8. CSS/JS 文件管理
  13. 正则爬取猫眼电影排行榜 待修改版
  14. displaytag 国际化 探索日志 注释
  15. 张果老能是鸿蒙时期一蝙蝠,他是八仙之一,吹一口气纸驴就能活过来,真实身份却是一只蝙蝠精...
  16. 任玉刚:让你的职业迷茫从哪来回哪去
  17. 软件测试工程师必备的27个基础技能
  18. react引入html2canvas和jspdf生成PDF打印及下载
  19. 【应用赏析】ArcGIS API for iOS在俄勒冈大学校园中的创新应用
  20. iOS 手动实现KVO / iOS KVO底层原理

热门文章

  1. RSA签名加签、验签实现
  2. spring boot SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“
  3. 【转载】完美的发出商品方案-SAP软件中发出商品的十个方案
  4. DolphinDB使用案例2:数据表分区
  5. excel折线图和堆积折线图
  6. 详解SVM支持向量机算法(一:感知器和SVM的优点)
  7. 聚观早报 | 雷军卸任小米互娱执行董事;腾讯新增四个游戏工作室
  8. Acwing4818. 奶牛大学
  9. Robust Stochastic Optimization Made Easy with RSOME
  10. c语言实现时间片轮转调度算法