using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Ichni.RhythmGame { public class PlayingRecorder { public int perfectCount; public int goodCount; public int badCount; public int missCount; public int totalCount; public float accuracy; public int currentCombo; public int maxCombo; public bool isFullCombo; public bool isAllPerfect; public void Initialize() { perfectCount = 0; goodCount = 0; badCount = 0; missCount = 0; totalCount = 0; accuracy = 100f; currentCombo = 0; maxCombo = 0; isFullCombo = true; isAllPerfect = true; } private void UpdateAccuracy() { float baseValue = perfectCount + goodCount * 0.7f + badCount * 0.3f; if (totalCount > 0) { accuracy = baseValue / totalCount * 100f; } else { accuracy = 100f; // 如果没有任何击打,准确率为100% } } private void AddCombo() { currentCombo++; maxCombo = Mathf.Max(maxCombo, currentCombo); } private void ResetCombo() { currentCombo = 0; } public void AddPerfect() { perfectCount++; totalCount++; AddCombo(); UpdateAccuracy(); GameManager.instance.gameUICanvas.UpdateAccuracy(accuracy); GameManager.instance.gameUICanvas.UpdateCombo(currentCombo); } public void AddGood() { goodCount++; totalCount++; AddCombo(); UpdateAccuracy(); isAllPerfect = false; GameManager.instance.gameUICanvas.UpdateAccuracy(accuracy); GameManager.instance.gameUICanvas.UpdateCombo(currentCombo); } public void AddBad() { badCount++; totalCount++; ResetCombo(); UpdateAccuracy(); isFullCombo = false; isAllPerfect = false; GameManager.instance.gameUICanvas.UpdateAccuracy(accuracy); GameManager.instance.gameUICanvas.UpdateCombo(currentCombo); } public void AddMiss() { missCount++; totalCount++; ResetCombo(); UpdateAccuracy(); isFullCombo = false; isAllPerfect = false; GameManager.instance.gameUICanvas.UpdateAccuracy(accuracy); GameManager.instance.gameUICanvas.UpdateCombo(currentCombo); } } }