public void UpdateGame(float elapsedFromStartTimeSec) { if (noteItems == null) { return; } // User Action check userAction.checkInput(); var count = userAction.GetCount(); for (int i = 0; i < count; i++) { // タップ状態の変更時に1回のみ実行 var userActionState = userAction.GetInputState(i); if (userActionState == UserActionState.TapStart) { OnButtonTap(i); canvas.OnTapBtn(i, true); } else if (userActionState == UserActionState.TapEnd) { OnButtonOut(i); canvas.OnTapBtn(i, false); } } // canvasの更新 canvas.UpdateGame(elapsedFromStartTimeSec); // ノートの更新 foreach (var note in noteItems) { // 消滅判定 var distance = note.GetDistance(elapsedFromStartTimeSec); if (distance < -2000) { continue; } // 生成判定 (必要なタイミングでノートのビューを生成します) if (note.isStartOnce(elapsedFromStartTimeSec)) { note.CreateSpriteView(canvas.panel.transform, prefabFactory); note.UpdateState(); } // ビューの処理 if (note.view) { note.UpdateView(elapsedFromStartTimeSec); } // debug:オートプレイ if (canvas.toggle.isOn && gameLogic.DetectAuto(note, elapsedFromStartTimeSec)) { gameLogic.DestroyNote(note); onPerfect(note.xId); } // 消滅判定 if (note.view && note.isEnd(elapsedFromStartTimeSec)) { // 連結ノーツ以外消去 if (note.state == NoteState.WaitTap) { gameLogic.DestroyNote(note); } } } }