@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user