【Unity】渐入渐出的黑屏(白屏)过场动画最简单的实现
一个简单的黑屏动画,用于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组件,用一张纯黑或纯白图片,大小调整为覆盖屏幕即可。如下:
![](/assets/blank.gif)
Curve控制透明度0到1再回到0的动画节奏,可按需自行调节。
Speed可以控制播放的速度。
层级
在我的项目中,摄像机是移动的。为了方便随时可以播放黑屏动画,我把该对象挂在Camera下面,
设置为隐藏(GameObject.SetActive(false))。
需要播放黑屏动画时,SetActive(true)即可自动播放,播放完成将会再次隐藏。
![](/assets/blank.gif)
【Unity】渐入渐出的黑屏(白屏)过场动画最简单的实现相关推荐
- matlab 柱面投影,图像拼接(不投影到柱面)(渐入渐出融合) matlab程序
1,先拍摄一组图片,比如两幅图:A.B 我直接用网上的两幅图: 2,分别投影到柱面坐标系 就用自己写的柱面投影程序 matlab里 结果: 3,开始配准第一步:SIFT得到匹配对(直接用OpenCV里 ...
- 图像拼接(不投影到柱面)(渐入渐出融合) matlab程序
1,先拍摄一组图片,比如两幅图:A.B 我直接用网上的两幅图: 2,分别投影到柱面坐标系 就用自己写的柱面投影程序 matlab里 结果: 3,开始配准第一步:SIFT得到匹配对(直接用OpenCV里 ...
- unity2D:对话框Dialog——弹出、渐入渐出
注:该文为学习笔记,具体请看b站upMichael-Studio的unity教程2D入门:13敌人Enemy! 环境:unity2020.3 本章目标:制作游戏中的弹出窗口 Panel 对话框肯定是一 ...
- 微信小程序-实现元素渐入渐出动画效果-封装方法
开端 之前一直使用堪称"万能"的jQuery处理用户交互的动画,近日开发微信小程序,微信小程序高度限制的语法和功能使开源函数可谓对其"无能为力". 那没办法,只 ...
- Taro React组件使用(1) —— Overlay 遮罩层【渐入渐出动画遮罩层】
Overlay 遮罩层 提供一个简单的 Overlay 遮罩层,在页面上的层级为 1026; 1. 使用指南 在 Taro 文件中引入组件,将组件放入src下的components文件夹中 impor ...
- 图像拼接(一):柱面投影+模板匹配+渐入渐出融合
这种拼接方法的假设前提是:待拼接的两幅图像之间的变换模型是平移模型,即两幅图像同名点位置之间只相差两个未知量:ΔxΔx 和ΔyΔy,自由度为2,模型收得最紧.所以只有所有图像都是用同一水平线或者同一已 ...
- MASM32编程实现窗口渐入渐出效果
因为工作太忙,好久没写程序代码了,不过编写程序的乐趣令我乐此不疲. 天天跟电脑打交道,一忙起来就忘了休息,弄得眼睛都花了~ 为了保护眼睛,偶决定写一个定时强制休息的程序~ 虽然现在这类程序已有不少,不 ...
- 图像拼接(二):柱面投影+模板匹配+渐入渐出融合(GPU版)
本篇博客的代码修改自图像拼接(一):柱面投影+模板匹配+渐入渐出融合.新的代码充分利用了OpenCV库函数的GPU版本.在一些方法中使用了GpuMat这一数据结构,它是Mat的替代.Mat运行在CPU ...
- Android 启动APP时黑屏白屏的三个解决方案
Android 启动APP时黑屏白屏的三个解决方案 参考文章: (1)Android 启动APP时黑屏白屏的三个解决方案 (2)https://www.cnblogs.com/liqw/p/42634 ...
最新文章
- Mac下使用ABTestingGateway快速搭建灰度网关
- 2021-04-28 Python可视化图表生成-Matplotlib绘图
- 中国已消失的九所世界级大学
- MYSQL优化---hidba
- Windows server 2003 CA配置(一)
- 错误计算机怎么打开,电脑开机出错怎么回事
- svg 折线添加新的折点
- 输入输出数组元素的函数重载_C ++函数重载| 查找输出程序| 套装3
- python 3.7 replace函数的坑
- 【PostgreSQL-9.6.3】分区表
- 红包随机分配问题php,自己写仿微信红包的随机分配,为什么平均数差距这么大?...
- 8. CSS/JS 文件管理
- 正则爬取猫眼电影排行榜 待修改版
- displaytag 国际化 探索日志 注释
- 张果老能是鸿蒙时期一蝙蝠,他是八仙之一,吹一口气纸驴就能活过来,真实身份却是一只蝙蝠精...
- 任玉刚:让你的职业迷茫从哪来回哪去
- 软件测试工程师必备的27个基础技能
- react引入html2canvas和jspdf生成PDF打印及下载
- 【应用赏析】ArcGIS API for iOS在俄勒冈大学校园中的创新应用
- iOS 手动实现KVO / iOS KVO底层原理
热门文章
- RSA签名加签、验签实现
- spring boot SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“
- 【转载】完美的发出商品方案-SAP软件中发出商品的十个方案
- DolphinDB使用案例2:数据表分区
- excel折线图和堆积折线图
- 详解SVM支持向量机算法(一:感知器和SVM的优点)
- 聚观早报 | 雷军卸任小米互娱执行董事;腾讯新增四个游戏工作室
- Acwing4818. 奶牛大学
- Robust Stochastic Optimization Made Easy with RSOME
- c语言实现时间片轮转调度算法