长音符再修复 加入了关卡连接 优化了一些默认加载

This commit is contained in:
FloatGaming
2026-01-13 11:22:39 +08:00
parent 2738089af1
commit 2f9d4aae0c
426 changed files with 299413 additions and 1050 deletions
@@ -33,10 +33,39 @@ public class Animation_GenerateJudgementSituationPrefab : MonoBehaviour
public float fadeOutStartTime = 0.6f; // 生成后第几秒开始渐隐
public float fadeOutDuration = 0.3f; // 渐隐动画持续时长
// Cache spawn transforms to avoid accessing destroyed GameObject references.
private Transform redSpawn;
private Transform greenSpawn;
private Transform yellowSpawn;
private Transform purpleSpawn;
private Transform blueSpawn;
private void Awake()
{
if (Instance == null) Instance = this;
else Destroy(gameObject);
else
{
Destroy(gameObject);
return;
}
CacheSpawnPoints();
}
private void OnEnable()
{
// In case this object survives scene changes / references are assigned late.
if (redSpawn == null && redEffect != null) CacheSpawnPoints();
}
private void CacheSpawnPoints()
{
// Important: check Unity "fake null" before accessing .transform
redSpawn = redEffect != null ? redEffect.transform : null;
greenSpawn = greenEffect != null ? greenEffect.transform : null;
yellowSpawn = yellowEffect != null ? yellowEffect.transform : null;
purpleSpawn = purpleEffect != null ? purpleEffect.transform : null;
blueSpawn = blueEffect != null ? blueEffect.transform : null;
}
public void SpawnJudgePrefab(string color, string judgeResult)
@@ -95,7 +124,7 @@ public class Animation_GenerateJudgementSituationPrefab : MonoBehaviour
// --- 2. 透明度逻辑 (基于秒数) ---
if (sr != null)
{
float alpha = 1f;
float alpha;
// 渐显阶段:当前时间 < fadeInTime
if (elapsed < fadeInTime)
@@ -138,19 +167,28 @@ public class Animation_GenerateJudgementSituationPrefab : MonoBehaviour
private Transform GetSpawnPoint(string color)
{
if (string.IsNullOrEmpty(color)) return null;
// If references were destroyed (Unity fake null) try to rebuild cache once.
if (redSpawn == null && greenSpawn == null && yellowSpawn == null && purpleSpawn == null && blueSpawn == null)
{
CacheSpawnPoints();
}
switch (color.ToLower())
{
case "red": return redEffect?.transform;
case "green": return greenEffect?.transform;
case "yellow": return yellowEffect?.transform;
case "purple": return purpleEffect?.transform;
case "blue": return blueEffect?.transform;
case "red": return redSpawn;
case "green": return greenSpawn;
case "yellow": return yellowSpawn;
case "purple": return purpleSpawn;
case "blue": return blueSpawn;
default: return null;
}
}
private GameObject GetJudgePrefab(string result)
{
if (string.IsNullOrEmpty(result)) return null;
switch (result.ToLower())
{
case "perfect": return perfect_judge_prefab;