一个简单的黑屏动画,用于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))。文章来源:https://www.toymoban.com/news/detail-475511.html
需要播放黑屏动画时,SetActive(true)即可自动播放,播放完成将会再次隐藏。文章来源地址https://www.toymoban.com/news/detail-475511.html
到了这里,关于【Unity】渐入渐出的黑屏(白屏)过场动画最简单的实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!