结算重做部分 谱面分装好 编队UI之bug修复

This commit is contained in:
2025-12-16 04:15:22 +08:00
parent aaca372833
commit 51b39d8b18
96 changed files with 17823 additions and 11337 deletions
+76 -48
View File
@@ -106,56 +106,9 @@ public class GameManager : MonoBehaviour
StartCoroutine(HandleTestModeStartup());
return;
}
// 以下为原有流程(已保留注释,未改写)
// 在游戏开始时加载并初始化谱面
string beatmapFilePath = Path.Combine(Application.streamingAssetsPath, "Emilia_demo.json");
if (!File.Exists(beatmapFilePath))
{
Debug.LogError($"谱面文件不存在: {beatmapFilePath}");
return;
}
string json = File.ReadAllText(beatmapFilePath);
// 假设 Beatmap 是一个已定义的类
Beatmap beatmap = JsonUtility.FromJson<Beatmap>(json); // 解析 JSON 为 Beatmap 对象
if (beatmap == null)
{
Debug.LogError("谱面解析失败,JSON 格式可能错误!");
return;
}
beatmapManager.LoadBeatmap(beatmap); // 传递给 BeatmapManager
noteSpawner.LoadBeatmap(beatmap); // 传递给 NoteSpawner
// 播放背景音乐(延迟播放由 beatmapManager.globalDelaySeconds 决定)
if (!string.IsNullOrEmpty(beatmap.musicFile))
{
AudioClip musicClip = Resources.Load<AudioClip>(beatmap.musicFile);
if (musicClip == null)
{
Debug.LogError($"音乐文件加载失败: {beatmap.musicFile}");
}
else
{
musicSource.clip = musicClip;
float delay = beatmapManager != null ? beatmapManager.globalDelaySeconds : 0f;
if (delay > 0f)
{
musicSource.PlayDelayed(delay);
Debug.Log($"Scheduled music to play after {delay} seconds.");
}
else
{
musicSource.Play();
}
}
}
else
{
Debug.LogError("谱面中 musicFile 为空!");
StartCoroutine(HandleNormalModeStartup());
}
}
@@ -346,6 +299,81 @@ public class GameManager : MonoBehaviour
UpdateStatusOnConsole("Playback started");
}
private IEnumerator HandleNormalModeStartup()
{
// 加载谱面但不生成音符
string beatmapFilePath = Path.Combine(Application.streamingAssetsPath, "Emilia_demo.json");
if (!File.Exists(beatmapFilePath))
{
Debug.LogError($"谱面文件不存在: {beatmapFilePath}");
yield break;
}
string json = File.ReadAllText(beatmapFilePath);
bool parsed = beatmapManager.ParseJsonOnly(json);
if (!parsed)
{
Debug.LogError("ParseJsonOnly 失败");
yield break;
}
// 暂停系统
SubscribeToPauseManager();
PauseManager.Instance?.Pause(true);
UpdateStatusOnConsole("Paused: press Space to start playback");
// 等待空格
while (!Input.GetKeyDown(KeyCode.Space))
{
yield return null;
}
// 恢复
PauseManager.Instance?.Pause(false);
// 生成音符
if (beatmapManager.beatmap != null)
{
noteSpawner.LoadBeatmap(beatmapManager.beatmap);
}
else
{
Debug.LogError("beatmap 未解析");
yield break;
}
// 播放背景音乐(延迟播放由 beatmapManager.globalDelaySeconds 决定)
if (!string.IsNullOrEmpty(beatmapManager.parsedMusicFile))
{
AudioClip musicClip = Resources.Load<AudioClip>(beatmapManager.parsedMusicFile);
if (musicClip == null)
{
Debug.LogError($"音乐文件加载失败: {beatmapManager.parsedMusicFile}");
}
else
{
musicSource.clip = musicClip;
float delay = beatmapManager.globalDelaySeconds;
if (delay > 0f)
{
musicSource.PlayDelayed(delay);
Debug.Log($"Scheduled music to play after {delay} seconds.");
}
else
{
musicSource.Play();
}
}
}
else
{
Debug.LogError("谱面中 musicFile 为空!");
}
UpdateStatusOnConsole("Playback started");
}
private void UpdateStatusOnConsole(string message)
{
Debug.Log(message);