UniAvatar - 簡易Unity對話系統 (操作篇)

N 人看过

Demo畫面鎮樓
Result

簡介

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拿掉即可。

TMPCONFIG

場景架構

打開專案後,首先要打開範例場景TextMeshProExample

打開範例場景TextMeshProExample之後,可以看到場景是由一個Canvas作為主要組成,
在Canvas最底下的是Controller們,這部分會在之後的實作細節文章中再仔細提到。

Hierarchy

稍微簡單介紹UGUI中的架構,主要分為背景(背景圖片與物件)、中景(人物與相對應互動)、前景(對話框等UI物件),最前方是操作時會點選的Panel物件與選項框物件。

可以透過調整下方的人物圖片、UI圖片等,來製作屬於自己的ADV遊戲。

注意:如果調整名字時,記得在Animation Manager中調整Animation Target對應的Key,以免動畫沒辦法正確對應

AnimationManager

關於動畫等系統詳細的介紹,會在之後的文章中慢慢補上。

介紹完外觀上的架構後,讓我先來介紹一下對話內容的設定吧。

對話設定

這個專案參考了許多的文字冒險遊戲設定方法,最後決定以試算表作為文本設定的方式進行編輯。

可以參考 範例所使用的文本 中所使用的格式。

也可以自由將這份文件自己複製一份,方便自己編輯劇情文本。

第一頁列出目前所實作的Action的種類,以及其對應的參數,這個設定檔算是紀錄目前的功能以及與企劃同步資訊用的,不會實際讀進遊戲中。

Sheet1

可以看到目前實作了對話、動畫、選項、分支四大類別。

在第二頁中,可以看到透過前述的這些分類設定了範例的對話內容:

Sheet2

其中的參數意義,請參考第一頁所列出的內容。

大家可能注意到了,其中第一頁不管是名字,或是對話內容都有個Key在結尾出現。

這是因為這個系統也製作了簡單的翻譯用文字表格:

Sheet3

目前只是使用Google Spreadsheet的內建Google Translate,請大家不要太在意翻譯品質。

第一行的Key為了在劇情表中可以一眼看出對話內容,目前暫時使用整句中文語句作為主要key,可以依照實際翻譯所需進行調整。

Sheet4

最後一個列表是遊戲中的變數們,實際使用的時候只會用到第一列的值,後面只是方便記錄這個變數實際上的作用。

將對話設定匯入引擎的步驟

這一個段落會敘述如何將上述的劇情與文本等文件,匯入到Unity引擎中使用。

首先將前面的試算表點選 檔案 [→] 下載 [→] 逗號分隔值檔案

將ActionSetting, Words, Flag 三個檔案都下載下來

DL

將下載出來的檔案覆蓋下面資料夾中的三個檔案

SettingPath

檔案覆蓋後,回到上一層的目錄

SettingAssetPath

將三個目錄最上面的按鈕都點選重新讀檔,就可以將新的文本覆蓋了!

ApplySetting

最後,因為這個範例是使用Text Mesh Pro進行製作,所以要更新Text Atlas

首先點選這個資料夾中的SDF檔案
FontPath

在Inspector中點選Update Atlas
UpdateAtlas

跳出Text Mesh Pro視窗後,接著將選單選擇到From File
FromFile

最後按下Generate,最後按下Save就可以將Text Atlas更新了
GenerateAndSave

接下來回到場景執行,就是更新後的文本了!
Result

遊戲範例

範例所使用的文本

※這個範例與試算表的文本是直接同步的,但是目前公開的Repo並沒有包含下載功能。

相關文章 (陸續更新)

  1. 操作介紹
  2. 故事主控器介紹
  3. 動畫主控器介紹
  4. 多語言實作介紹
  5. 讀取設定檔介紹