小屋創作

日誌2021-10-16 20:21

【專案日誌】山鴉行動 多語言、存讀檔 10/16

作者:樂小呈

10/16 今天是星爆日欸

終於把上次積一堆的 Bug 清完了,然後把砍掉的存讀檔系統重做好,還有實裝語言切換

存讀檔系統
上次 Build 我就把舊的存檔系統整個砍了,亂糟糟的,一樣也是單例黏來黏去,還好遺留得問題不大,砍起來輕鬆。在試過 ScriptableObject 令牌的作法後,我整個變成他的形狀了,有夠方便

所以存讀檔也用令牌的方式做,但這次我把它搞成無中心的系統,第一是 Manager 單例黏來黏去很煩,無中心就不用擔心一堆耦合指向 Manager(其實單存令牌的作法就不會了)

第二是不需要初始化,應該說不需要由 Manager 完成,現在改成資料的使用者初始化時也幫令牌初始化,可以避免一些執行順序的問題。

我弄了一個 StorgeDataToken 的抽象類別,裡面可以把自己轉變成 json 然後儲存進 PlayerPrefs 的方法。


接著看我要儲存什麼資料,建立一個子類別繼承,然後宣告變數好ㄌ,父層會自動建立出存檔。



這樣搞的第一個好處是我能從編輯器裡修改 PlayerPrefs 儲存的數值,直接用自定義編輯器調用存檔函式,覆蓋掉舊的存檔。不然有時候要測試特定數值還要整個清光,然後在從 play mode 裡調,很麻煩   

理論上還能作到實時修改拉,但因為一些舊架構遺留的毛病,我怕實時改會導致什麼問題,所以就讓他在 play mode 鎖定編輯。但還是看得到數值,如果要檢查存檔狀態就直接看令牌,不需要寫一堆 print 來檢查



第二個好處是多個數據使用者都能直接從令牌拿資料,尤其是 UI 方便很多,不需要先讀進一個 Manager 在從它那裡拿。舊架構我還是用舊的作法拉,免得出問題,但新寫部份就不同了,我的 OptionManager 和 Option UI 就是各自從令牌存取資料。

只要讓 OptionManager 在初始化的時候註冊數值修改的事件監聽,就算 Option UI 直接修改令牌裡的資料,Manager 也會收到通知。

Manager 和 UI 完全分離,也不需要用什麼ㄌㄐ單例,阿斯。右邊能直接看到數值修改。


可能會有的問題大概是令牌的事件監聽可能忘記取消註冊,但暫時應該沒事,只要我不用 += 註冊監聽,直接 = 覆蓋就好。


語言切換實裝
上次更新就把語言文本切換的功能完成了,但還沒實裝。剛好這次修了存讀檔就順便也把語言切換實裝上去,系統沒什麼問題,可以直接用,主要花了點時間思考怎麼整合存讀檔、語言和 UI 而已。

先機翻了設置界面的選項頂著 :P

比較大的問題是切換語言的同時,會重新讀取整個遊戲的所有文本。現在是不會有影響,但不知道以後文本多了會不會嚴重卡頓

主要多修改的地方是有新的文本文件要建立的時候比較麻煩。雖然上次有寫了一個自動產生文本的功能,但是要用的地方還是得自己寫 menu item 調用函式,editor code 會污染到其他地方。

於是我搞了個 custom Attributes,能直接輸入型別,讓 inspecotr 顯示出建立文件的按鈕。一行搞定!



主要問題是 Attributes 後面一定要有變數,雖然不會造成什麼影響拉,但要宣告沒用的變數還是感覺怪怪的。

就醬
UI 修改選項設置,但同時又不用接觸到存讀檔和語言系統,讚拉
ScriptableObject 令牌的作法有夠方便的


接下來
一部分的音效來了,開始稿音效和音樂播放系統

29

1

LINE 分享

相關創作

20240407 遊戲製作進度

【學習】插件、多人和反向工程

使用Unity,在本地端使用 New Input System,讓不同輸入設備分別控制各自的角色

留言

開啟 APP

face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】