Signed-off-by: TRAfoer <lhf190@outlook.com>
This commit is contained in:
2025-12-21 01:00:57 +08:00
parent 55b7d30a04
commit 826f300f29
29 changed files with 225344 additions and 37672 deletions

View File

@@ -9,7 +9,7 @@ namespace Ichni.RhythmGame
{
public List<(NoteBase note, float activationTime, float finishTime)> pendingNotes = new List<(NoteBase, float, float)>();
private int nextNoteIndex = 0;
private List<(NoteBase note1, bool isActive, float activationTime)> ProcessingNotes = new List<(NoteBase, bool, float)>();
public void RegisterNote(NoteBase note, float activationTime, float finishTime)
{
pendingNotes.Add((note, activationTime, finishTime));
@@ -25,9 +25,29 @@ namespace Ichni.RhythmGame
void Update()
{
float currentTime = EditorManager.instance.songInformation.songTime;
foreach (var item in ProcessingNotes)
{
var (note, isActive, activationTime) = item;
if (!isActive) note.Update();
note.gameObject.SetActive(isActive);
if (isActive)
{
note.Update();
if (currentTime < activationTime)
{
note.noteVisual?.Recover();
}
else if (note is Hold hold && currentTime >= hold.holdEndTime)
{
hold.SetFinishEffects();
}
}
}
ProcessingNotes.Clear();
// 一次性移除所有 null 项
pendingNotes.RemoveAll(item => item.note == null);
@@ -39,13 +59,12 @@ namespace Ichni.RhythmGame
if (shouldBeActive && !isActive)
{
note.gameObject.SetActive(true);
if (currentTime < note.exactJudgeTime) note.noteVisual?.Recover();
ProcessingNotes.Add((note, true, activationTime));
}
else if (!shouldBeActive && isActive)
{
note.gameObject.SetActive(false);
ProcessingNotes.Add((note, false, activationTime));
}
}