为了防止加载场景过于生硬以及等待时长,使用UI组件制作一个淡入淡出的效果,在切换场景时播放,通过控制canvasGroup的alpha来实现效果。
Fader:
- using System.Collections;
- using System.Collections.Generic;
- using Unity.VisualScripting;
- using UnityEngine;
-
- namespace RPG.SceneMangement
- {
- // Fader 类用于在场景加载时实现淡入淡出效果
- public class Fader : MonoBehaviour
- {
- CanvasGroup canvasGroup; // 用于控制画布的透明度
-
- private void Start()
- {
- canvasGroup = GetComponent<CanvasGroup>();
- StartCoroutine(FadeOutIn()); // 启动协程实现淡入淡出效果
- }
-
- IEnumerator FadeOutIn()// 协程方法:先实现淡出效果,再实现淡入效果
- {
- yield return FadeOut(3f); // 执行淡出效果,持续时间为 3 秒
-
- yield return FadeIn(1f);// 执行淡入效果,持续时间为 1 秒
-
- }
- public IEnumerator FadeOut(float time) // 公共协程方法:实现淡出效果
- {
- while(canvasGroup.alpha <1)
- {
- canvasGroup.alpha += Time.deltaTime / time;// 逐渐增加透明度
- yield return null;// 等待一帧
- }
- }
-
- public IEnumerator FadeIn(float time)// 公共协程方法:实现淡入效果
- {
- while (canvasGroup.alpha > 0) // 当透明度大于 0 时持续减少透明度
- {
- canvasGroup.alpha -= Time.deltaTime / time;// 逐渐减少透明度
- yield return null;// 等待一帧
- }
- }
- }
- }
-
复制代码
|