UniAvatar - 簡易Unity對話系統 (操作篇)
Demo畫面鎮樓
簡介
UniAvatar是一個使用Unity製作的簡易對話系統,與文字冒險遊戲的範例。
專案所撰寫的程式碼均開放原始碼,且遵守MIT Lincense,但專案中的ADV實作部分有參考使用其他專案,使用時請參考各自的開放協議。
感謝ArmeCyan提供立繪與UI的支援,如果喜歡他的畫風請去粉專支持。
Repository連結:https://github.com/Harrison-Dev/UniAvatar
範例連結: 點我
如果有任何希望追加的功能,歡迎在repo中發issue或是PR協助專案變得更完整!
操作說明
目前Repo上的版本是以Text mesh pro為主進行設定的,所以這次的操作步驟也會是以TMPro為主。
如果想使用一般UGUI Text,可以在Player Setting中,將TMP_SUPPORT Define拿掉即可。
場景架構
打開專案後,首先要打開範例場景TextMeshProExample。
打開範例場景TextMeshProExample之後,可以看到場景是由一個Canvas作為主要組成,
在Canvas最底下的是Controller們,這部分會在之後的實作細節文章中再仔細提到。
稍微簡單介紹UGUI中的架構,主要分為背景(背景圖片與物件)、中景(人物與相對應互動)、前景(對話框等UI物件),最前方是操作時會點選的Panel物件與選項框物件。
可以透過調整下方的人物圖片、UI圖片等,來製作屬於自己的ADV遊戲。
注意:如果調整名字時,記得在Animation Manager中調整Animation Target對應的Key,以免動畫沒辦法正確對應
關於動畫等系統詳細的介紹,會在之後的文章中慢慢補上。
介紹完外觀上的架構後,讓我先來介紹一下對話內容的設定吧。
對話設定
這個專案參考了許多的文字冒險遊戲設定方法,最後決定以試算表作為文本設定的方式進行編輯。
可以參考 範例所使用的文本 中所使用的格式。
也可以自由將這份文件自己複製一份,方便自己編輯劇情文本。
第一頁列出目前所實作的Action的種類,以及其對應的參數,這個設定檔算是紀錄目前的功能以及與企劃同步資訊用的,不會實際讀進遊戲中。
可以看到目前實作了對話、動畫、選項、分支四大類別。
在第二頁中,可以看到透過前述的這些分類設定了範例的對話內容:
其中的參數意義,請參考第一頁所列出的內容。
大家可能注意到了,其中第一頁不管是名字,或是對話內容都有個Key在結尾出現。
這是因為這個系統也製作了簡單的翻譯用文字表格:
目前只是使用Google Spreadsheet的內建Google Translate,請大家不要太在意翻譯品質。
第一行的Key為了在劇情表中可以一眼看出對話內容,目前暫時使用整句中文語句作為主要key,可以依照實際翻譯所需進行調整。
最後一個列表是遊戲中的變數們,實際使用的時候只會用到第一列的值,後面只是方便記錄這個變數實際上的作用。
將對話設定匯入引擎的步驟
這一個段落會敘述如何將上述的劇情與文本等文件,匯入到Unity引擎中使用。
首先將前面的試算表點選 檔案 [→] 下載 [→] 逗號分隔值檔案
將ActionSetting, Words, Flag 三個檔案都下載下來
將下載出來的檔案覆蓋下面資料夾中的三個檔案
檔案覆蓋後,回到上一層的目錄
將三個目錄最上面的按鈕都點選重新讀檔,就可以將新的文本覆蓋了!
最後,因為這個範例是使用Text Mesh Pro進行製作,所以要更新Text Atlas
首先點選這個資料夾中的SDF檔案
在Inspector中點選Update Atlas
跳出Text Mesh Pro視窗後,接著將選單選擇到From File
最後按下Generate,最後按下Save就可以將Text Atlas更新了
接下來回到場景執行,就是更新後的文本了!
遊戲範例
※這個範例與試算表的文本是直接同步的,但是目前公開的Repo並沒有包含下載功能。
相關文章 (陸續更新)
- 操作介紹
- 故事主控器介紹
- 動畫主控器介紹
- 多語言實作介紹
- 讀取設定檔介紹