优化一大波

This commit is contained in:
2026-07-05 15:49:57 +08:00
parent 8485743cb7
commit 31cbb580b6
6 changed files with 47 additions and 7 deletions
+11
View File
@@ -41,6 +41,8 @@ namespace GameFramework
private EchoSystem _echoSystem; private EchoSystem _echoSystem;
private PlayerController _playerController; private PlayerController _playerController;
private int _maxHealth = 5; private int _maxHealth = 5;
private bool _subscribedScoreEvent = false;
private int _lastSoulCount = -1;
void Start() void Start()
{ {
@@ -64,6 +66,7 @@ namespace GameFramework
if (ScoreManager.Instance != null) if (ScoreManager.Instance != null)
{ {
ScoreManager.onScoreChanged += UpdateSoulCount; ScoreManager.onScoreChanged += UpdateSoulCount;
_subscribedScoreEvent = true;
UpdateSoulCount(ScoreManager.Instance.CurrentScore); UpdateSoulCount(ScoreManager.Instance.CurrentScore);
} }
@@ -78,8 +81,12 @@ namespace GameFramework
} }
void OnDestroy() void OnDestroy()
{
if (_subscribedScoreEvent)
{ {
ScoreManager.onScoreChanged -= UpdateSoulCount; ScoreManager.onScoreChanged -= UpdateSoulCount;
_subscribedScoreEvent = false;
}
} }
void Update() void Update()
@@ -96,7 +103,11 @@ namespace GameFramework
if (soulCountText != null) if (soulCountText != null)
{ {
soulCountText.text = count.ToString(); soulCountText.text = count.ToString();
if (count != _lastSoulCount)
{
Debug.Log($"[GameHUD] UpdateSoulCount: {count}"); Debug.Log($"[GameHUD] UpdateSoulCount: {count}");
_lastSoulCount = count;
}
} }
else else
{ {
+5 -2
View File
@@ -21,8 +21,8 @@ namespace GameFramework
public static GameState GameState public static GameState GameState
{ {
get => Instance.gameState; get => Instance != null ? Instance.gameState : GameState.Playing;
set => Instance.gameState = value; set { if (Instance != null) Instance.gameState = value; }
} }
[SerializeField] private GameState gameState = GameState.Playing; [SerializeField] private GameState gameState = GameState.Playing;
@@ -68,6 +68,9 @@ namespace GameFramework
/// </summary> /// </summary>
private IEnumerator DeathTransition() private IEnumerator DeathTransition()
{ {
// 确保从暂停状态恢复(玩家可能在暂停时死亡)
Time.timeScale = 1f;
// 等待一帧,让 HUD 先更新血量显示 // 等待一帧,让 HUD 先更新血量显示
yield return null; yield return null;
+10
View File
@@ -95,5 +95,15 @@ namespace GameFramework
Application.Quit(); Application.Quit();
#endif #endif
} }
void OnDestroy()
{
if (startButton != null) startButton.onClick.RemoveAllListeners();
if (storyReplayButton != null) storyReplayButton.onClick.RemoveAllListeners();
if (creditsButton != null) creditsButton.onClick.RemoveAllListeners();
if (quitButton != null) quitButton.onClick.RemoveAllListeners();
if (settingsBackButton != null) settingsBackButton.onClick.RemoveAllListeners();
if (creditsCloseButton != null) creditsCloseButton.onClick.RemoveAllListeners();
}
} }
} }
+17 -1
View File
@@ -27,7 +27,23 @@ namespace GameFramework
private Color color; private Color color;
private bool isLoading = false; private bool isLoading = false;
public void LoadGameplayScene() => Load(gameplayScene); public void LoadGameplayScene()
{
// 重置 GameManager 状态
if (GameManager.Instance != null)
{
GameManager.GameState = GameState.Playing;
GameManager.onGameOver = null;
GameManager.onGameWin = null;
}
// 重置 ScoreManager
if (ScoreManager.Instance != null)
ScoreManager.Instance.ResetScore();
// 清理静态事件残留订阅
IndianOceanAssets.Engine2_5D.HealthSystem.onPlayerDamaged = null;
Load(gameplayScene);
}
public void LoadMainMenuScene() => Load(mainMenuScene); public void LoadMainMenuScene() => Load(mainMenuScene);
public void LoadScoringScene() => Load(scoringScene); public void LoadScoringScene() => Load(scoringScene);
public void Load(string sceneName) public void Load(string sceneName)
@@ -125,7 +125,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
lifetime: 10 lifetime: 10
damageOnContact: 1 damageOnContact: 3
fadeOutDuration: 2 fadeOutDuration: 2
soulDropPrefab: {fileID: 1000000000000001, guid: 5d3fc7696ceb3a24d9234355fee1c344, type: 3} soulDropPrefab: {fileID: 1000000000000001, guid: 5d3fc7696ceb3a24d9234355fee1c344, type: 3}
--- !u!135 &8338025974414621740 --- !u!135 &8338025974414621740
+1 -1
View File
@@ -24,7 +24,7 @@ namespace IndianOceanAssets.Engine2_5D
[Header("伤害")] [Header("伤害")]
[Tooltip("怪物碰触灵灯时受到的伤害")] [Tooltip("怪物碰触灵灯时受到的伤害")]
[SerializeField] private int damageOnContact = 1; [SerializeField] private int damageOnContact = 3;
[Header("渐隐")] [Header("渐隐")]
[Tooltip("碰触后灵灯渐隐消失的时间(秒)")] [Tooltip("碰触后灵灯渐隐消失的时间(秒)")]