一、前言
在游戏中,经常遇到不同关卡,不同场景之间的过渡,而渐明渐暗则是其中一种比较简单自然的过渡效果,本文则是介绍如何用协程实现此效果。
二、原理
控制图片的不透明度实现渐明渐暗
使用协程可以在我们需要过渡的时候再调用,节省性能
三、步骤
场景UI中放一张黑色Image图片(布满屏幕)
新建一个脚本输入以下代码,挂在黑色图片上
private float speed = 2f;//渐明渐暗的速度
private Image image;//当前物体的image组件,记得加上using UnityEngine.UI的命名空间
private void Start()
{
image = transform.GetComponent<Image>();
StartCoroutine(BeBright());//开始渐明
}
Public void PassLevel()//通关或场景过渡时调用此函数使用渐暗效果
{
StartCoroutine(BeDark());
}
IEnumerator BeDark()//渐暗
{
while (1 - image.color.a > 0.05f)
{
image.color = Color.Lerp(image.color, new Color(0, 0, 0, 1), speed *Time.deltaTime);//用逐步增加图片不透明度来
yield return null;//代表每一帧执行返回一次,相当于在update中执行,但比update要节省性能
}
//在此可以写变暗之后的逻辑
}
IEnumerator BeBright()//渐明
{
while (image.color.a > 0.05f)
{
image.color = Color.Lerp(image.color, new Color(0, 0, 0, 0), speed *Time.deltaTime);
yield return null;//代表每一帧执行返回一次,相当于在update中执行,但比update要节省性能
}
//在此可以写变明之后的逻辑
}
————————————————
版权声明:本文为CSDN博主「静风闲云」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/AiZuoQueBuDong/article/details/126167168