This commit is contained in:
2025-05-27 18:18:41 +08:00
parent ebf9dd0237
commit b28044f602
17 changed files with 3228 additions and 643 deletions
@@ -3,6 +3,9 @@ using System.Collections.Generic;
using DG.Tweening;
using UnityEngine.Rendering;
using System.Collections;
using AibisDream.Framework;
using UnityEngine.EventSystems;
using AibisDream.FixSystem;
namespace AibisDream
{
@@ -42,7 +45,7 @@ namespace AibisDream
}
}
public IEnumerator TriggerFlash(string imagePath, float fadeDuration = 0.5f)
public IEnumerator TriggerFlash(string imagePath, float fadeDuration = 0.2f)
{
if (!isFading)
{
@@ -63,7 +66,7 @@ namespace AibisDream
}
}
public void TriggerEnding(string imagePath,float fadeDuration=2f)
public IEnumerator TriggerEnding(string imagePath, float fadeDuration = 2f)
{
if (!isFading)
{
@@ -73,13 +76,11 @@ namespace AibisDream
{
if (currentEndingIndex == 0)
{
// 第一张图片使用淡入效果
StartEndingFadeIn(endingSprite,fadeDuration);
yield return StartEndingFadeIn(endingSprite, 0.01f);
}
else
{
// 后续图片使用交叉淡入淡出效果
StartEndingCrossFade(endingSprite,fadeDuration);
yield return StartEndingCrossFade(endingSprite, fadeDuration);
}
currentEndingIndex++;
}
@@ -100,6 +101,7 @@ namespace AibisDream
isFading = true;
targetSpriteRenderer.sprite = flashSprite;
targetSpriteRenderer.color = new Color(1f, 1f, 1f, 0f);
StartCoroutine(CameraKit.Instance.ShakeCamera(fadeDuration, 0.25f, 60));
// 创建新的序列
currentSequence?.Kill();
@@ -125,7 +127,7 @@ namespace AibisDream
DialogController.Instance.StartDialogNode("闪回完成");
}
private void StartEndingFadeIn(Sprite endingSprite,float fadeDuration=2f)
private IEnumerator StartEndingFadeIn(Sprite endingSprite, float fadeDuration = 2f)
{
isFading = true;
targetSpriteRenderer.sprite = endingSprite;
@@ -137,17 +139,18 @@ namespace AibisDream
// 添加淡入效果
currentSequence.Append(targetSpriteRenderer.DOFade(1f, fadeDuration).SetEase(Ease.InOutSine));
if (volume1 != null)
currentSequence.Join(DOTween.To(() => volume1.weight, x => volume1.weight = x, 1f, fadeDuration).SetEase(Ease.InOutSine));
// if (volume1 != null)
// currentSequence.Join(DOTween.To(() => volume1.weight, x => volume1.weight = x, 1f, fadeDuration).SetEase(Ease.InOutSine));
// 等待序列完成
yield return currentSequence.WaitForCompletion();
// 完成后重置状态
currentSequence.OnComplete(() => {
isFading = false;
currentSequence = null;
});
isFading = false;
currentSequence = null;
}
private void StartEndingCrossFade(Sprite endingSprite,float crossFadeDuration=2f)
private IEnumerator StartEndingCrossFade(Sprite endingSprite, float crossFadeDuration = 2f)
{
isFading = true;
@@ -163,20 +166,20 @@ namespace AibisDream
currentSequence.Join(targetSpriteRenderer.DOFade(0f, crossFadeDuration).SetEase(Ease.InOutSine));
currentSequence.Join(backupSpriteRenderer.DOFade(1f, crossFadeDuration).SetEase(Ease.InOutSine));
// 完成后交换两个渲染器的角色
currentSequence.OnComplete(() => {
// 交换sprite
var tempSprite = targetSpriteRenderer.sprite;
targetSpriteRenderer.sprite = backupSpriteRenderer.sprite;
backupSpriteRenderer.sprite = tempSprite;
// 等待序列完成
yield return currentSequence.WaitForCompletion();
// 重置透明度
targetSpriteRenderer.color = new Color(1f, 1f, 1f, 1f);
backupSpriteRenderer.color = new Color(1f, 1f, 1f, 0f);
// 交换两个渲染器的角色
var tempSprite = targetSpriteRenderer.sprite;
targetSpriteRenderer.sprite = backupSpriteRenderer.sprite;
backupSpriteRenderer.sprite = tempSprite;
isFading = false;
currentSequence = null;
});
// 重置透明度
targetSpriteRenderer.color = new Color(1f, 1f, 1f, 1f);
backupSpriteRenderer.color = new Color(1f, 1f, 1f, 0f);
isFading = false;
currentSequence = null;
}
private void OnDestroy()