using System; using System.Collections; using System.Collections.Generic; using System.Threading.Tasks; using Cysharp.Threading.Tasks; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class SplashScreen : MonoBehaviour { private Image image; async void Start() { image = GetComponentInChildren(); // 初始完全透明 image.color = new Color(1, 1, 1, 0); // 渐显效果(2秒) await Fade(0, 1, 0.5f); // 保持显示(原2秒等待) await UniTask.Delay(TimeSpan.FromSeconds(1)); // 渐隐效果(1秒) await Fade(1, 0, 0.5f); await SceneManager.LoadSceneAsync(1); if (transform != null) Destroy(gameObject); } private async UniTask Fade(float startAlpha, float endAlpha, float duration) { float elapsed = 0f; while (elapsed < duration) { float alpha = Mathf.Lerp(startAlpha, endAlpha, elapsed / duration); image.color = new Color(1, 1, 1, alpha); elapsed += Time.deltaTime; await UniTask.Yield(); } image.color = new Color(1, 1, 1, endAlpha); } }