Udemy-Unity制作类暗黑破坏神游戏记录-P74

2024-09-15
91看过
为了防止加载场景过于生硬以及等待时长,使用UI组件制作一个淡入淡出的效果,在切换场景时播放,通过控制canvasGroup的alpha来实现效果。
Fader:
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using Unity.VisualScripting;
  4. using UnityEngine;
  5. namespace RPG.SceneMangement
  6. {
  7.     // Fader 类用于在场景加载时实现淡入淡出效果
  8.     public class Fader : MonoBehaviour
  9.     {
  10.         CanvasGroup canvasGroup; // 用于控制画布的透明度
  11.         private void Start()
  12.         {
  13.             canvasGroup = GetComponent<CanvasGroup>();
  14.             StartCoroutine(FadeOutIn()); // 启动协程实现淡入淡出效果
  15.         }
  16.         IEnumerator FadeOutIn()// 协程方法:先实现淡出效果,再实现淡入效果
  17.         {
  18.             yield return FadeOut(3f); // 执行淡出效果,持续时间为 3 秒
  19.             yield return FadeIn(1f);// 执行淡入效果,持续时间为 1 秒
  20.         }
  21.         public IEnumerator FadeOut(float time) // 公共协程方法:实现淡出效果
  22.         {
  23.             while(canvasGroup.alpha <1)
  24.             {
  25.                 canvasGroup.alpha += Time.deltaTime / time;// 逐渐增加透明度
  26.                 yield return null;// 等待一帧
  27.             }
  28.         }
  29.         public IEnumerator FadeIn(float time)// 公共协程方法:实现淡入效果
  30.         {
  31.             while (canvasGroup.alpha > 0) // 当透明度大于 0 时持续减少透明度
  32.             {
  33.                 canvasGroup.alpha -= Time.deltaTime / time;// 逐渐减少透明度
  34.                 yield return null;// 等待一帧
  35.             }
  36.         }
  37.     }
  38. }
复制代码





回复

举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表