項目 divider 尚未註冊或是沒有一個 view.php 檔案.

《Carto》實作對話系統04-把腳本加到對應的物件上

設定Area物件

把Area腳本加到Area物件上,並設定該Area的編號(Num)。

新增並設定Area物件的元件

設定角色物件A

把SimpleMovement、RoleObj、TalkBehav腳本加到A物件上,並設定RoleObj所在的物件的身分(Role)為何。

新增並設定A物件的元件

設定角色物件B

把RoleObj、TalkBehavNPC腳本加到B物件上,並設定RoleObj所在的物件的身分(Role)為何。

新增並設定B物件的元件

設定PlayerProgress物件

把PlayerProgress腳本加到Progress物件上,並設定遊戲有甚麼任務或事情(Name)。

新增並設定PlayerProgress物件的元件

設定DialoguesManager物件

把DialoguesManager腳本加到DialoguesManager物件上。

將從腳本元件的上方往下一一進行各個欄位的說明:

  • AreaDialogues串列的右側欄位可以設定有多少個Area會有對話。
新增並設定DialoguesManager物件的元件-1
  • AreaDialogues的每個串列元素(Element)可以藉由設定AreaNum欄位來決定此元素,或說區域的對話是哪個Area的。
  • AreaDialogues的每個串列元素可以藉由設定其中的Dialogues串列的右側欄位來決定該Area有幾個對話。
新增並設定DialoguesManager物件的元件-2
  • 再來就可以設定”進行對話的先決條件(Task Conditions)”,Task Conditions串列的右側欄位可以設定有多少個條件。
新增並設定DialoguesManager物件的元件-3
  • Task Conditions的每個串列元素可以設定Task Index欄位決定是PlayerProgress的哪個Task;再設定Is Task Compelete欄位決定這個Task是完成了還是沒有完成的狀態下,才能觸發對話。
新增並設定DialoguesManager物件的元件-4
  • 接下來設定”要說甚麼”跟”誰說”,也就是對話的文字內容,Sentences串列的右側欄位可以設定有多少個句子。
新增並設定DialoguesManager物件的元件-5
  • Sentences可以設定
    • Speaker:決定是誰說的。
    • Text:決定這個人要說甚麼。
新增並設定DialoguesManager物件的元件-6

測試看看

之後按下執行按鈕,就可以看到對話系統是能夠正常運作了。

然而,使用下來會發現一些問題,像是:

  1. 沒有辦法顯示中文字
  2. 介面使用起來,不是那麼好用
  3. 對話結束後,觸發事件要怎麼做
  4. 如果希望對話可以在角色進到範圍內,就直接觸發要怎麼做

以上提到的這四項問題,將會在接下來的文章中一一解決。

系列文章

《Carto》實作對話系統01-前言
《Carto》實作對話系統02-建立遊戲所需物件
《Carto》實作對話系統03-建構程式
《Carto》實作對話系統05-當TextMeshPro沒有辦法顯示中文
《Carto》實作對話系統06-改善對話系統的操作介面
《Carto》實作對話系統07-加入對話結束後會觸發的事件
《Carto》實作對話系統08-當條件滿足時,不用按按鍵,可以直接觸發的對話

Colin TPL
Colin TPL

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *