This commit is contained in:
SoulliesOfficial
2026-06-12 06:52:57 -04:00
parent 021e76efe7
commit 3e2d78524c
2 changed files with 65 additions and 0 deletions

View File

@@ -104,6 +104,46 @@ namespace Ichni.RhythmGame
GameManager.Instance.noteManager.RegisterNote(this, exactJudgeTime - beyondTime - 0.5f);
}
}
/// <summary>
/// 当 NoteVisual 被动态挂载或替换后,重新缓存效果列表并刷新 NoteManager 注册。
/// </summary>
public void RefreshNoteVisualCaches()
{
generateEffects = GetEffectListSafe("Generate");
generalJudgeEffects = GetEffectListSafe("GeneralJudge");
perfectEffects = GetEffectListSafe("Perfect");
goodEffects = GetEffectListSafe("Good");
badEffects = GetEffectListSafe("Bad");
missEffects = GetEffectListSafe("Miss");
afterJudgeEffects = GetEffectListSafe("AfterJudge");
float beyondTime = 0f;
if (generateEffects != null)
{
for (int i = 0; i < generateEffects.Count; i++)
{
EffectBase effectBase = generateEffects[i];
if (effectBase is NoteGenerateEffect ge)
{
ge.nowEffectState = EffectBase.EffectState.Before;
ge.Recover();
beyondTime = Mathf.Max(beyondTime, ge.generateTime);
}
else
{
effectBase.nowEffectState = EffectBase.EffectState.Before;
effectBase.Recover();
}
}
}
if (exactJudgeTime - beyondTime - 0.5f > -GameManager.Instance.songInformation.delay)
{
gameObject.SetActive(false);
GameManager.Instance.noteManager.RegisterNote(this, exactJudgeTime - beyondTime - 0.5f);
}
}
#endregion
#region [] Main Update & Visual Calculate