长音符再修复 加入了关卡连接 优化了一些默认加载
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user