【Godot4筆記】存檔功能(上)-游戲設置



????????Godot官方文檔介紹的很詳細,其中也給到了游戲配置的存檔建議。大致看了下原理都大差不差。
SavingGames:https://docs.godotengine.org/en/stable/tutorials/io/saving_games.html
ConfigFile:https://docs.godotengine.org/en/stable/classes/class_configfile.html#class-configfile
????????我參考的是SavingGame文檔中介紹的方法來保存設置信息。
???????? 首先創(chuàng)建一個用于寫存檔功能的腳本(不清楚以后會不會把游戲數(shù)據(jù)的相關存檔也放這里,看官方文檔介紹,可能內(nèi)容會非常多,說不定還要找別的方式來存檔游戲數(shù)據(jù)),存檔腳本不掛在在任何場景內(nèi),直接在項目-項目設置-自動加載中啟用,這樣就可以全局調(diào)用了。
???????? 存檔功能腳本內(nèi)容如下:

????????存數(shù)據(jù)步驟如下:

讀數(shù)據(jù)步驟如下:

????????以上方式,生成的存檔文件是沒有經(jīng)過加密的。要想加密存檔,使用FileAccess. open_encrypted_with_pass()方法打開文件,寫入用file.store_var()方法,讀出用file.get_var()方法。
???????? 存、讀存檔文件的方法很簡單,比較復雜的是游戲初始化時將存檔應用的順序、時機、方式。
???????? 先判斷配置文件是否存在,根據(jù)結果來覺得使用游戲初始的默認配置還是讀取存檔來初始化數(shù)據(jù)。

????????設置菜單中有些UI控件可以直接使用某些方法,既可以改變UI顯示上的狀態(tài),也可以同時觸發(fā)該控件的信號,類似CheckBox的set_pressed()和Slider的set_value()(godot自帶編輯器不會提示)。不過,ItemList里我沒有找到能同時改變顯示狀態(tài)和發(fā)出信號的方法,所以要手動設置顯示狀態(tài),再調(diào)用信號。
???????? 使用便捷的方法來同時修改狀態(tài)和觸發(fā)信號,帶來的問題就是按鈕上綁定的音效,在游戲初始化時就會響起。因為音效播放的動作是直接寫在信號方法里的,同時修改狀態(tài)和觸發(fā)信號的方法是沒有辦法通過信號內(nèi)傳遞參數(shù)的,我的解決辦法就是,加個計時。
????????以后可以在啟動游戲后,做一個假的進度條,設置內(nèi)容加載完成后進入主界面。

????????修改完配置后保存。



????????另外,兩種全屏模式后,應該就不再設置窗口大小了,所以禁用ItemList的選單??赡苁莋odot4的bug,不管代碼還是屬性面板內(nèi)修改Items的Disabled的狀態(tài),item只有顯示上改變了,點擊還是會觸發(fā)信號。也不知道是不是我哪里沒整對。



