Merge branch '7.28补充' into 'develop'

修复问题

See merge request aibis-dream/aibis-dream!813
This commit is contained in:
2026-07-27 20:33:52 +00:00
6 changed files with 1656 additions and 1648 deletions
File diff suppressed because it is too large Load Diff
@@ -230,7 +230,7 @@ namespace AibisDream
}
/// <summary>
/// 等待表达流程就绪(开场表现 + 火山表达panel 播完
/// 等待表达流程就绪(粒子字入场完成即可;panel 动效可并行
/// </summary>
public IEnumerator WaitUntilExpressionFlowReady()
{
@@ -29,7 +29,6 @@ namespace AibisDream.MiniGame.Language
private const int DeepLast = 14;
private const int UiFlashFirst = 15;
private const int UiFlashLast = 29;
private const int StatusRevealFrame = 21;
private const int RingFirst = 30;
private const int RingLast = 40;
private const int OutputFirst = 41;
@@ -309,7 +308,9 @@ namespace AibisDream.MiniGame.Language
public IEnumerator PlayPanelAndWait()
{
int generation = BeginPlayback();
yield return PlayRangeAndWait(UiFlashFirst, UiFlashLast, generation, StatusRevealFrame, ShowStatusAndObjective);
// 状态/目标文字与 UI 闪动同步出现,避免先看一长段空动效再出字
ShowStatusAndObjective();
yield return PlayRangeAndWait(UiFlashFirst, UiFlashLast, generation);
if (generation != playbackGeneration)
yield break;
@@ -532,7 +532,7 @@ namespace AibisDream.MiniGame.Language
}
/// <summary>
/// 等待表达流程就绪(开场表现 + 火山表达panel 播完
/// 等待表达流程就绪(粒子字入场完成即可交互;panel 动效可并行、不阻塞
/// </summary>
public IEnumerator WaitUntilExpressionFlowReady()
{
@@ -3162,6 +3162,13 @@ namespace AibisDream.MiniGame.Language
yield break;
}
// panel / 状态文字与粒子入场并行:先出字,不把交互锁到整段 UI 动效播完
if (expressionPanelRoutine != null)
{
StopCoroutine(expressionPanelRoutine);
}
expressionPanelRoutine = StartCoroutine(PlayExpressionPanelThenReady());
float initialScale = Mathf.Max(0.05f, entranceInitialScale);
foreach (var candidate in particles)
@@ -3203,9 +3210,11 @@ namespace AibisDream.MiniGame.Language
maxCoreTime = Mathf.Max(maxCoreTime, delay + entranceCoreBurstDuration);
}
float coreLead = 0f;
if (coreCandidates.Count > 0)
{
yield return new WaitForSeconds(maxCoreTime * 0.6f);
coreLead = maxCoreTime * 0.6f;
yield return new WaitForSeconds(coreLead);
}
float cascadeDuration = 0f;
@@ -3227,10 +3236,11 @@ namespace AibisDream.MiniGame.Language
cascadeDuration = Mathf.Max(cascadeDuration, delay + entranceCascadeDuration);
}
float waitTime = Mathf.Max(maxCoreTime, cascadeDuration);
if (waitTime > 0f)
// 只等 cascade / core 剩余时间,避免把已等过的 core 前半段再算一遍
float remaining = Mathf.Max(maxCoreTime - coreLead, cascadeDuration);
if (remaining > 0f)
{
yield return new WaitForSeconds(waitTime + 0.2f);
yield return new WaitForSeconds(remaining);
}
foreach (var candidate in particles)
@@ -3241,18 +3251,13 @@ namespace AibisDream.MiniGame.Language
}
entranceTargets.Clear();
// 粒子字已到位即可交互;panel 环光等动效继续播,不再挡输入
allowInput = true;
entranceRoutine = null;
// 开场表现完成,启动独立的火山表达panel协程(避免与 Entrance 耦合)
if (expressionPanelRoutine != null)
{
StopCoroutine(expressionPanelRoutine);
}
expressionPanelRoutine = StartCoroutine(PlayExpressionPanelThenReady());
}
/// <summary>
/// 独立协程:播放火山表达panel,播完后将表达流程标记为就绪
/// 独立协程:播放火山表达 panel / 状态文字(与粒子入场并行,不负责解锁交互)
/// </summary>
private IEnumerator PlayExpressionPanelThenReady()
{
@@ -3267,7 +3272,10 @@ namespace AibisDream.MiniGame.Language
yield return screenPresentation.PlayPanelAndWait();
if (screenPresentation == null ||
screenPresentation.State != ExpressionScreenPresentationController.ScreenState.Panel)
{
expressionPanelRoutine = null;
yield break;
}
}
else if (!string.IsNullOrEmpty(expressionPanelTimelineName) && TimelineCenter.Instance != null)
{
@@ -3297,7 +3305,6 @@ namespace AibisDream.MiniGame.Language
Debug.LogWarning("[LanguageParticleManager] TimelineCenter.Instance 为空,无法播放火山表达panel");
}
allowInput = true;
expressionPanelRoutine = null;
}
@@ -27,8 +27,8 @@ namespace AibisDream.MiniGame.Language
}
/// <summary>
/// 启动表达粒子系统(在打开视图后调用),等待火山表达panel播完再返回
/// 流程:若有上一轮则先淡出字与连线 → 再淡入火山释放 log → 再启动新一轮并等表达 panel 就绪。
/// 启动表达粒子系统(在打开视图后调用),等粒子字入场完成即可返回(可交互);panel 动效并行不阻塞
/// 流程:若有上一轮则先淡出字与连线 → 再淡入火山释放 log → 再启动新一轮并等粒子就绪。
/// 注意:Yarn Spinner 2.x 对同名 <see cref="YarnCommand"/> 重载支持不可靠,只保留一个注册入口,用可选参数区分 3/4 参调用。
/// <<start_expression "哈哈|嘿嘿|呵呵" "我很害怕" "ExpressionCompleted">>
/// <<start_expression "哈哈|嘿嘿|呵呵" "我很害怕" "ExpressionCompleted" 24>>
+1 -1
View File
@@ -133,7 +133,7 @@ PlayerSettings:
vulkanEnableLateAcquireNextImage: 0
vulkanEnableCommandBufferRecycling: 1
loadStoreDebugModeEnabled: 0
bundleVersion: 0.6.1.5-20260728-031155
bundleVersion: 0.6.1.9-20260728-041713
preloadedAssets:
- {fileID: 11400000, guid: 0fb2bc2476953fc43a74f0ab8879077c, type: 2}
metroInputSource: 0