- 對(duì)話內(nèi)容顯示
- 加速對(duì)話文字顯示
- 略過(guò)對(duì)話
- 人物立繪的顯示
- 人物名稱的顯示
- 對(duì)話文本是採(cǎi)用外部檔案存取
- 選擇系統(tǒng)
主文
如果以上面列出的功能的話,其實(shí)今天進(jìn)度推蠻多的
1. 2. 5. 6. 項(xiàng)的功能都完成的差不多了,然後第 4 項(xiàng)的內(nèi)容也有先建立好對(duì)應(yīng)的方法了,只是因?yàn)檫€沒(méi)有找到適合的圖片進(jìn)行測(cè)試,所以就先不列入完成清單了
今天主要內(nèi)容是將程式碼內(nèi)容完善,讓之前建立好的框架能有實(shí)際執(zhí)行的內(nèi)容。
首先是 DialogueSystem.cs 這是整個(gè)對(duì)話系統(tǒng)的對(duì)外窗口
也就是如果我們現(xiàn)在有一個(gè) NPC 要說(shuō)話,他就要呼叫這隻程式的方法,並傳入他要說(shuō)的文本檔名,來(lái)啟動(dòng)整個(gè)對(duì)話系統(tǒng)。
因?yàn)槲覀兛梢宰x取外部文本檔案來(lái)顯示對(duì)話內(nèi)容,所以傳入的資料需要是文本的檔名即可。
文本的資料架構(gòu)是放在 DialogueData.cs ,雖說(shuō)我們主要是以外部文件存取的方式去讀取文本,但實(shí)際在執(zhí)行的時(shí)候,還是將他轉(zhuǎn)換成方便處理的資料結(jié)構(gòu)。
整體流程大概是先用 Resources.LoadAll<TextAsset>(path) 去讀取所有要存取的文本,接著用 DialogueData 內(nèi)寫(xiě)的轉(zhuǎn)檔方法將 TextAsset 轉(zhuǎn)成我們需要的資料結(jié)構(gòu)。
對(duì)話系統(tǒng)的核心放在 DialogueCanvas.cs 這隻程式內(nèi),主要負(fù)責(zé)控制頁(yè)面元件的顯示內(nèi)容什麼的,都是放在裡面,不過(guò)感覺(jué)程式有點(diǎn)冗長(zhǎng),目前有在考慮要不要再做額外的拆分……
總而言之,整個(gè)對(duì)話系統(tǒng)初始化的時(shí)候,DialogueCanvas.cs 也會(huì)進(jìn)行初始化,將頁(yè)面需要的出現(xiàn)的元件也都建立完畢,以利後續(xù)的內(nèi)容顯示。
這隻程式是有繼承 MonoBehaviour 的,主要是要掛載在 DialogueCanvas 這個(gè)場(chǎng)景物件上,之所以要掛載在物件上,是因?yàn)槲乙褂?Update() 這些方法去顯示文字內(nèi)容。
可能要先另外提一下,DialogueFSM.cs 這隻程式,我有先寫(xiě)一個(gè)關(guān)於對(duì)話系統(tǒng)的狀態(tài)機(jī),目前有暫定幾個(gè)狀態(tài): 待命、準(zhǔn)備說(shuō)話、對(duì)話中、對(duì)話結(jié)束等待切換
接著透過(guò)這幾個(gè)狀態(tài)在 DialogueCanvas 的 Update() 中去判斷並調(diào)整顯示中的對(duì)話內(nèi)容
附上目前成品的展示與檔案架構(gòu)
以上,今天就差不多做這些了
另外有人有推薦的 GIF 截圖工具嗎?