我按了『重新開始遊戲』,金幣等級怎麼還是上一局的數字!
玩家按重新開始,結果金幣、等級、計時器全部沒歸零,帶著上一局的數字進新的一局。這不是你忘了寫歸零——你缺的詞叫「全域單例不會被場景重載清掉」。這頁講為什麼有些東西「重開」它還活著。
先說結論:你沒忘記寫歸零。是有些東西「重新開始」的時候,它根本沒死。
畫面重現:玩家上一局玩到金幣 9999、等級 50。他點「重新開始遊戲」,準備從零開始爽一把。結果新的一局一開場——
金幣 9999,等級 50,計時器還在上一局的秒數。
玩家一臉問號,你也一臉問號:「我明明重新載入場景了啊?數字怎麼還在?」
因為你重新載入的是場景,但那些數字不住在場景裡。它們住在一個「重載也殺不死」的地方。
你缺的詞 = autoload singleton(全域單例,跨場景存活)
為什麼「重載場景」沒把數字歸零?(人話版)
Godot(還有很多引擎)有一種東西叫 autoload 單例——你可以把它想成「常駐後台的管家」。它管你的金幣、等級、音效、計時器這些「全遊戲共用」的資料。
它的特點是:它不屬於任何一個場景,它活在所有場景之上。 這樣不管你切到哪個關卡,管家都在,資料不會掉。平常這很方便。
但你按「重新開始」時,用的通常是「重新載入當前場景」這招。它做的事是:把舞台拆掉、重搭一個乾淨的。
問題來了——那個管家(單例)不在舞台上。舞台拆了重搭,管家從頭到尾坐在旁邊翹腳,你上一局塞給它的 9999 金幣,它一分不少地帶進新的一局。
所以「重新開始」重開的是舞台,不是管家。管家的記憶你沒清,它當然啥都記得。
正確做法:親自叫管家「把記憶洗掉」
解法很直接:給這個管家一個 reset() 方法,然後在遊戲主場景一開始就叫它洗記憶。
# 在有狀態的 autoload(管金幣/等級的那個)裡,加一個 reset()
func reset() -> void:
gold = 0
level = 1
play_time = 0.0
# ...把所有「單局資料」歸零
# 在主場景的 _ready() 裡,開局就呼叫它
func _ready() -> void:
var rm := get_node_or_null("/root/ResourceManager")
if rm:
rm.reset() # 開新局前,先叫管家把上一局的記憶洗掉
⚠️ 還有一個附帶陷阱:如果你在「遊戲結束」時停掉了某些東西(例如停掉了計時),reset 的時候記得把它重新打開(set_process(true) 之類),不然新的一局計時器是死的。
判斷原則:該保留的(存檔進度)別亂清;該歸零的(這一局的金幣/等級/計時)要親手清,別指望「重載場景」幫你清。
⚖️ 誠實說清楚:這個坑用 Godot 的詞(autoload)來講,但任何有「全域狀態」的架構都會踩——網頁遊戲的全域變數、手機遊戲的 singleton manager,形狀一模一樣。核心教訓:「重新開始」不等於「全部歸零」。跨場景/全域活著的東西,你不主動清,它就不清。
你會搜錯的關鍵字 vs 該搜的正確詞彙
| 你崩潰時會打的(搜不到) | 該搜的正確詞彙 |
|---|---|
| 「Godot 重新開始數值沒歸零」 | autoload singleton state persist |
| 「reload scene 沒有重置」 | reload_current_scene doesn’t reset autoload |
| 「重開遊戲金幣還在」 | global state reset / singleton reset |
把右邊那欄丟進 Google、或直接貼給你的 AI。這就是我們在幹的事——把你崩潰時打出來的髒話,翻譯成能找到答案的詞。
🎁 直接貼給你的 ChatGPT / Claude
這一段免費。複製、貼上、送出——先讓你的 AI 動起來。
我用 Godot 做遊戲。我發現按「重新開始」(reload_current_scene)之後,某些狀態(金幣、等級、計時器)沒有歸零,還是上一局的數字。 請告訴我: 1. 為什麼 reload_current_scene() 沒有把這些狀態重置?(我聽說跟 autoload 單例有關) 2. 哪些東西會「跨場景存活」、不被場景重載清掉? 3. 正確的重置做法是什麼?請給我一個「在 autoload 加 reset() 方法、在主場景 _ready() 呼叫」的範例。
想更進一步?
上面免費的三層已經能讓你動起來。如果你想要「照著做不迷路」甚至「我們幫你跑好」——往下看。
- 免費 這個坑是什麼、誰會踩
- 免費 人話解釋:錯在哪、正確的詞彙
- 免費 一段可直接貼給 AI 的 prompt
完整實作文件
未來新增- 一份「哪些狀態該歸零、哪些該保留」的分類清單(存檔資料 vs 單局資料)
- 完整的 reset 流程範本,含被停掉的計時/處理要重新開啟
- 「新遊戲 vs 讀檔 vs 重開關卡」三種情況的狀態處理差異
可跑的 codebase / skill
未來新增- 現成的遊戲狀態重置範本,clone 下來套用就好
- ✅ 一鍵歸零單局資料 ✅ 保留該保留的存檔 ✅ 重新啟用被停的處理
本文首發於 AI 許願池(https://kaowan.pages.dev/articles/restart-doesnt-reset/),發佈日 2026年7月5日。 轉載請註明出處——原創者不怕考古,只有小偷怕。🕳️