本次更新(v1.0.6001.0)重新製作了回想介面,原本基於 Fungus NarrativeLog 的回想介面已移除。
新的回想除了劇情台詞,也會記錄數值、好感度、技能等變化,並寫入存檔。
用到舊回想功能的 MOD 可能會失效、報錯或顯示異常,請 MOD 作者依照下方說明自行更新。
已移除
劇情場景 MainUI 裡舊的回想畫面物件 NarrativeLog
場景裡的 Fungus NarrativeLogMenu
ToggleNarrativeLogView() 已經無法使用。
用 FindObjectOfType
() 會拿到 null。 Mortal.Story.StoryManager 的成員:
欄位:_narrativeLogMenu、_narrativeLog、_narrativeView、_logCloseButton
方法:WaitForLogCanvas()
用反射存取這些欄位會拿到 null;Harmony patch 這個方法會失敗。
已變更
回想介面改成新的 Mortal.Core.StoryLogPanel,劇情場景(Story)和養成場景(Free)都可以開啟,熱鍵同樣是回想鍵。
回想資料改由 Mortal.Core.StoryLogData 管理,並會寫入存檔。
StoryManager.Log(bool) / ToggleLogButton(bool) 名稱沒變,但內部改成開關新面板。原本 patch 這兩個方法的 MOD 請重新確認。
StoryMainUI.DisplayRelationshipModification 的參數從 (Sprite, int) 改為 (RelationshipStat, int)。
畫面上的數值、好感度、技能、道具、風雲史、敵方勢力提示與 message 劇情訊息,現在會同時寫入回想。用 Harmony prefix 略過 StoryMainUI 這些 Display 方法的 MOD,會讓對應紀錄消失。DisplayMessageText(string) 不會寫入回想。
Fungus 的 FungusManager.Instance.NarrativeLog 元件仍然存在並會記錄對話,讀取它的 MOD 可以繼續使用。不過它不再顯示在任何介面上,用 NarrativeLog.AddLine() 加入的內容玩家看不到。
新的寫入方式
引用 Mortal.Core.dll 後即可使用:
[c]using Mortal.Core;[/c]
[c]// 文字紀錄:直接顯示,不寫入存檔(建議 MOD 使用)[/c]
[c]StoryLogData.AddText("要顯示的文字", false);[/c]
[c]// 支援 Unity Rich Text[/c]
[c]StoryLogData.AddText("
[c]// 多語系訊息:開啟回想時才依目前語系組成文字[/c]
[c]// StoryLogArg.FromKey 會依語系翻譯,FromValue 直接顯示原值[/c]
[c]StoryLogData.AddMessage("MyMod/Format/Gain", false,[/c]
[c] StoryLogArg.FromKey("MyMod/Item/Sword"),[/c]
[c] StoryLogArg.FromValue("3"));[/c]
[c]// 讀取目前所有紀錄(唯讀),取得與回想介面相同的文字[/c]
[c]ILocaleResolver resolver = LocalizationManager.Instance.LocaleResolver;[/c]
[c]foreach (StoryLogEntry entry in StoryLogData.Entries)[/c]
[c]{[/c]
[c] // 紀錄用到的 KEY 不存在時回傳 false,回想介面也不會顯示這筆[/c]
[c] if (StoryLogFormatter.TryGetContent(entry, resolver, out string content))[/c]
[c] {[/c]
[c] // entry.Type:紀錄類型,entry.Key 的意義依類型而定[/c]
[c] // entry.IsSave:是否寫入存檔[/c]
[c] }[/c]
[c]}[/c]
劇情腳本(Lua)可以用 luamanager.AddStoryLogText("文字"),效果等同 AddText(text, false)。
注意事項
請優先使用 isSave = false。寫入存檔的紀錄在 MOD 移除後會被隱藏,但資料仍留在玩家存檔裡。
AddText 的文字無法多語系化,isSave 傳 true 也不會寫入存檔。需要寫入存檔請用 AddMessage 搭配語系 KEY。
劇情 MOD 請把 luamanager.AutoSave()、luamanager.ToggleSaveButton(1) 放在腳本開頭、任何台詞與數值變化之前,否則讀檔後這些紀錄會在回想中重複出現。
回想最多保留 300 筆,超過時會從最舊的開始移除。
不寫入存檔的紀錄在讀檔後會被清除。
以上不是正式的 MOD API,之後的版本仍可能調整。
【来源:steam】


