Unity Fungus Save System 官方文檔粗略翻譯

官方文檔

本人英語不好,只是需要詳細(xì)了解下填物,就順手隨意的翻譯一下纹腌。

為了保持明確性,部分專有名詞不進(jìn)行翻譯滞磺,且部分使用簡稱升薯。

  1. SP: Save Point. 存檔點(diǎn)。
  2. SPC: Save Point Command. 存檔點(diǎn)命令击困。
  3. SPL: Save Point Loaded event handler. 存檔點(diǎn)加載事件處理器涎劈。
  4. SM: Save Menu. 存檔菜單。

介紹

注意:存檔系統(tǒng)現(xiàn)在是測試版阅茶,以從社區(qū)獲得反饋蛛枚。在未來的更新中可能會有突破性的改變。

Fungus 存檔系統(tǒng)提供一個簡單的方式存儲和加載 Flowchart 的執(zhí)行狀態(tài)脸哀。

這個教學(xué)視頻展示了如何快速的添加保存功能蹦浦。

存檔系統(tǒng)通過存儲一系列 Save Points (之后用 SP 指代) 作為玩家的游戲進(jìn)度,以建立一個 Save History. 一個基礎(chǔ)的 Save Menu UI 允許玩家通過 Save History 存檔撞蜂、加載盲镶、重新開始、倒退和快進(jìn)蝌诡。

save_history.png

一個 SP 通過 Flowchart 中的 Save Point Command (之后用 SPC 指代) 創(chuàng)建溉贿。當(dāng)一個 SP 被加載時,會在執(zhí)行 SPC 后立刻恢復(fù)執(zhí)行游戲浦旱。存檔系統(tǒng)將負(fù)責(zé)在每個 SP 恢復(fù) Flowchart 的變量狀態(tài)宇色,你還可以通過 Save Point Loaded event handler 在加載特定 SP 時得到通知。

保存游戲的示例場景

以下內(nèi)容為介紹示例場景的功能颁湖,不進(jìn)行翻譯宣蠕。

To see how the save system works, open the example scene FungusExamples/Savegame/SaveGame.unity

Press play in Unity and click through the short story. The Save Menu can be accessed at any time by clicking the small gears icon in the top right. Try saving, loading, rewinding, fast forwarding and restarting at different points as you play through the story. Also try saving the game in the middle of the story and stopping the game. Press Play again and notice that the game resumes where you left off.

The Save Menu also supports an auto-saving mode where the game is saved to disk at every Save Point. You can enable this by selecting the Save Menu object and selecting the Auto Save property. The Save and Load buttons are disabled when using Auto Save.

The following are the key elements that are used to implement saving in this example scene.

Save Menu UI

Save Menu 對象能在層級窗口的根層級下看到。這個對象控制玩家和存檔系統(tǒng)交互的 UI 菜單爷狈。Save Menu 是一個單例對象植影,能跨場景存在,因此你只需要在第一個場景添加一個涎永。

選擇 Tools > Fungus > Create > Save Menu 添加 Save Menu.

創(chuàng)建 Save Points

SP 通過執(zhí)行 Flowchart 中的 SPC 創(chuàng)建思币。

為了在示例場景中了解過程鹿响,確保 Flowchart 窗口顯示(Tools > Fungus > Flowchart Window), 然后選擇層級窗口中的 Flowchart 對象并選擇其中的每一個 Block. 每個 Block 的第一個命令都是一個 SPC (通過 Flow > Save Point 添加)。

當(dāng)每個 SPC 執(zhí)行時谷饿,都會在 Save History 中添加一個新的 SP. 當(dāng)你加載游戲時惶我,在創(chuàng)建該 SP 的 SPC 后恢復(fù)執(zhí)行游戲。

在示例場景中博投,進(jìn)入 Flowchart 窗口選擇 "Start" Block, 并選擇位于命令列表頂部的 SPC, 可以發(fā)現(xiàn) Is Start Point 屬性啟用绸贡。這是 Flowchart 中唯一啟用該屬性的 SPC. 在場景中應(yīng)該只有一個 Start Point.

當(dāng)開始新游戲時,F(xiàn)ungus 會尋找一個啟用了 Is Start Point 屬性的 SPC 并執(zhí)行它毅哗。當(dāng)加載游戲時听怕,F(xiàn)ungus 會在相關(guān)的 SPC 開始執(zhí)行并忽略 Start Point.

這意味著如果你的游戲支持保存,每個場景都應(yīng)該總是只有一個啟用了 Is Start Point 屬性的 SPC.

注意:Game Started event handler 在新游戲和加載游戲時都會激活虑绵,這通常不會是你所期望的尿瞭,因此避免在支持保存的游戲中使用它。

處理 Save Point Loaded events

當(dāng)加載游戲時翅睛,為了確保場景處于正確的狀態(tài)声搁,你經(jīng)常需要做一些額外工作。例如捕发,攝像機(jī)也許需要移動到合適的位置疏旨,或者播放特定的音樂。通過 Save Point Loaded event handler (之后用 SPL 指代) 能簡單的完成這些工作扎酷。

在示例場景中檐涝,在 Flowchart 中選擇 "Play Music 1" Block, 能看到一個 SPL. 這會在 SP Keys 列表中的任意一個 SP 加載時執(zhí)行 Block. 在這個例子中,我們簡單的播放了一段音樂霞玄,但你可以做任何需要的配置骤铃。

SPL 在一個匹配的 SPC 執(zhí)行時(需要啟用 Fire Event 屬性)也會激活拉岁。這允許你將所有場景配置命令放置到單個共享的 Block 中坷剧,當(dāng)?shù)谝淮蔚竭_(dá) SPC 或在 SP 加載時,將調(diào)用該共享塊喊暖。

保存 Flowchart 變量

每個 SP 能保存當(dāng)時的 Flowchart 變量惫企。你可以用一個 Save Data 對象讓存檔系統(tǒng)知曉哪些 Flowcharts 被包含其中。注意目前只保存 Boolean, Integer, Float, String 變量陵叽。

在示例場景中狞尔,Save Data 對象能在層級窗口中看到。Flowcharts 屬性包括要保存的 Flowchart 對象列表巩掺。

通過 Tools > Fungus > Create > Save Data 添加一個 Save Data 對象到你的場景偏序。你可以添加任意數(shù)量的 Flowcharts 到列表中,但確保每一個都有獨(dú)一無二的名字胖替,否則加載不會正確工作研儒。

如果你對拓展存檔系統(tǒng)支持的其它數(shù)據(jù)類型感興趣(除了 Flowchart 變量)豫缨,你可以修改或繼承 SaveData 組件去實現(xiàn)。

Save Menu

Save Menu (以后用 SM 代表) 是一個簡單的允許玩家和存檔系統(tǒng)交互的 UI. 這一部分將解釋每個按鈕的功能和如何配置 SM 屬性端朵。

Save Menu 屬性

有四個你可能想要配置的主要屬性好芭。

  • Save Data Key: 字符串類型的鍵,用于保存游戲數(shù)據(jù)在 Player Prefs 中冲呢。如果你在一個 Unity 項目中定義了多個游戲舍败,請使用獨(dú)一無二的鍵。
  • Load On Start: 在啟動時自動加載敬拓。
  • Auto Save: 在每個 SP 自動保存游戲到硬盤上邻薯。當(dāng)這個選項啟用時,Save 和 Load 按鈕將失效乘凸。
  • Restart Deletes Save: 當(dāng)玩家重新開始游戲時弛说,從硬盤刪除游戲數(shù)據(jù)。這在你測試游戲時非常有用翰意,能確保你每次都從空白的游戲狀態(tài)開始木人。

注意:如果你的游戲使用了多個場景(通過 Load Scene 命令),確保在 Build Settings 中添加所有場景冀偶。

保存按鈕

按下保存按鈕醒第,將使當(dāng)前的 Save History 序列化為 Json 文本,并通過 PlayerPrefs 持久化儲存下來进鸠。

加載按鈕

按下加載按鈕稠曼,將使之前保存的 Json 數(shù)據(jù)反序列化,并用于填充 Save History. 使用最近的 SP 通過以下順序恢復(fù)游戲客年。

  • 加載保存在 SP 中的場景霞幅,即便它就是當(dāng)前加載的場景。
  • 恢復(fù) Flowchart 變量量瓜。
  • 調(diào)用 SPL 并在核實的 SPC 后開啟 Flowchart 的執(zhí)行司恳。

回退和快進(jìn)按鈕

允許你在 Save History 的 SP 之間后退和前進(jìn)。

每次移動只需加載存儲在 Save History 中特定點(diǎn)上的 SP. 這本身不會修改 Save History 或持久化任何數(shù)據(jù)绍傲。然而扔傅,如果你退回到更早的 SP 并重新開始游玩,下次 SPC 執(zhí)行會導(dǎo)致所有更早的 SP 永久丟失烫饼。

重新開始按鈕

清空 Save History 并加載開始場景猎塞。開始場景是 SM 被第一次初始化的場景。

游戲啟動

記住玩家能在任何時候選擇加載或重啟游戲杠纵。遵循以下簡單的規(guī)則荠耽,以確保游戲啟動在任何情況下都正常進(jìn)行。

  1. 每個場景都應(yīng)該有一個啟用了 Is Start Point 屬性的 SPC. 如果你有多個場景比藻,確保每個場景都有一個 Start SP 定義铝量,并且是場景中執(zhí)行的第一個命令伊履。
  2. 避免使用 Game Started event handler. 這只會在游戲第一次游玩時正常的工作,而不會在加載游戲時款违。在加載游戲后唐瀑,你會想要從 SP 開始執(zhí)行,而不是又一次從 Flowchart 的起點(diǎn)開始插爹。
  3. 當(dāng)你想要在某個特定的 SP 加載時哄辣,執(zhí)行一個 Block, 使用 SPL. 這些事件處理器會在恢復(fù)執(zhí)行前被調(diào)用,因此它給了你一個在游戲恢復(fù)游玩之前赠尾,配置工作的機(jī)會力穗。

術(shù)語

Save Point

一個 SP 是游戲在某個時間點(diǎn)的狀態(tài)的快照。每個 SP 記錄了當(dāng)前場景气嫁,當(dāng)時的 Flowchart 執(zhí)行(在 SPC 時)当窗,和當(dāng)時的 Flowchart 變量的值。目前只支持 Boolean, Interger, Float, String 變量寸宵。

Save Point Command

SPC 被用于在 Flowchart 執(zhí)行中創(chuàng)建一個 SP. 每個單獨(dú)的 SPC 會有一個獨(dú)一無二的 SP Key. Resume On Load 選項會導(dǎo)致在加載 SP 后從此點(diǎn)恢復(fù)執(zhí)行崖面。

Save Point Key

SP Key 是一個獨(dú)一無二的字符串,作為每個 SP 的標(biāo)識梯影。默認(rèn)下巫员,父 Block 的名字被用于 SP Key, 但你也可以使用自定義的鍵(例如,在一個 Block 中有多條 SPC)甲棍。

注意:每個鍵必須在每個場景中都是獨(dú)一無二的简识,否則無法正確加載。

Save History

Save History 包含一個之前記錄的 SP 的列表感猛,按時間順序存儲七扰。當(dāng)一個 SPC 執(zhí)行時,一個新的 SP 被創(chuàng)建陪白,并添加到 Save History 中颈走。

為了在運(yùn)行時可視化 Save History, 可以在層級中拓展 SM 對象。選擇 Save Menu > Panel > Debug View 并激活該游戲?qū)ο罂皆蟆R粋€ Save History 中的 SP 總結(jié)疫鹊,會被顯示在一個文本窗口中袖瞻。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末司致,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子聋迎,更是在濱河造成了極大的恐慌脂矫,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霉晕,死亡現(xiàn)場離奇詭異庭再,居然都是意外死亡捞奕,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門拄轻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來颅围,“玉大人,你說我怎么就攤上這事恨搓≡捍伲” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵斧抱,是天一觀的道長常拓。 經(jīng)常有香客問我,道長辉浦,這世上最難降的妖魔是什么弄抬? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮宪郊,結(jié)果婚禮上掂恕,老公的妹妹穿的比我還像新娘。我一直安慰自己弛槐,他們只是感情好竹海,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著丐黄,像睡著了一般斋配。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上灌闺,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天艰争,我揣著相機(jī)與錄音,去河邊找鬼桂对。 笑死甩卓,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蕉斜。 我是一名探鬼主播逾柿,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼宅此!你這毒婦竟也來了机错?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤父腕,失蹤者是張志新(化名)和其女友劉穎弱匪,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體璧亮,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡萧诫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年斥难,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帘饶。...
    茶點(diǎn)故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡哑诊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出及刻,到底是詐尸還是另有隱情搭儒,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布提茁,位于F島的核電站淹禾,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏茴扁。R本人自食惡果不足惜铃岔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望峭火。 院中可真熱鬧毁习,春花似錦、人聲如沸卖丸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽稍浆。三九已至载碌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間衅枫,已是汗流浹背嫁艇。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓坷备,卻偏偏與公主長得像,于是被迫代替她去往敵國和親猾漫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容