Unity淡入淡出
- 游戏开发
- 2025-09-01 23:09:01

淡入(Fade in):类似打开幕布
淡出(Fade out):类似关上幕布
方案一 使用Dotween(推荐) using DG.Tweening; using UnityEngine; using UnityEngine.UI; public class Test : MonoBehaviour { public Image curtain; private float fadeTime = 1; private void Update() { if (Input.GetKeyDown(KeyCode.A)) { SetAlpha(true);//测试淡入 } if (Input.GetKeyDown(KeyCode.D)) { SetAlpha(false);//测试淡出 } } /// <summary> /// 设置淡入淡出 /// </summary> /// <param name="isFadeIn">是否是淡入</param> private void SetAlpha(bool isFadeIn) { curtain.DOFade(isFadeIn ? 0 : 1, fadeTime); } private void OnDisable() { curtain.DOKill(); } } 方案二 使用协程 using System.Collections; using UnityEngine; using UnityEngine.UI; public class Test : MonoBehaviour { public Image fadePlane; private float fadeTime = 1; private void Update() { if (Input.GetKeyDown(KeyCode.A)) { StartCoroutine(Fade(true));//测试淡入 } if (Input.GetKeyDown(KeyCode.D)) { StartCoroutine(Fade(false));//测试淡出 } } IEnumerator Fade(bool isFadeIn) { var from = fadePlane.color; var to = new Color(from.r, from.g, from.b, isFadeIn ? 0 : 1); float speed = 1 / fadeTime; float percent = 0; while (percent < 1) { percent += Time.deltaTime * speed; fadePlane.color = Color.Lerp(from, to, percent); yield return null; } } } 方案三 使用Animation(不推荐)