×

unity使用协程简单实现渐明渐暗的过渡效果

Kalet Kalet 发表于2023-06-25 09:26:39 浏览717 评论0

抢沙发发表评论

一、前言


在游戏中,经常遇到不同关卡,不同场景之间的过渡,而渐明渐暗则是其中一种比较简单自然的过渡效果,本文则是介绍如何用协程实现此效果。


二、原理


控制图片的不透明度实现渐明渐暗

使用协程可以在我们需要过渡的时候再调用,节省性能

三、步骤


场景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


群贤毕至

访客