Dialogue System for Unity - Quest 教學

本教學介紹 Dialogue System for Unity 提供的 Quest System 管理遊戲的任務。

任務通常會在玩家與 NPC 對話後開始或完成,或是點擊遊戲物件開始(On Use)。

注意!任務名稱建議不要使用 / 斜線,避免稍後在選單會出現錯誤!

選取 Dialogue Editor 的任務時可透過 Inspector 設定任務。若需要顯示於 Quest tracker HUD 參考右圖。

Quest tracker HUD 顯示於畫面右上方

Quest Tracker HUD 可選擇不同的設計,例如 Wheel Standard Quest Tracker HUD

 

開啟 Quest log window 視窗

任務除了可顯示於 HUD,玩家可以開啟 Quest log window 檢視任務狀態,操作步驟如下:

建立空物件,重新命名為 Quest Log Window,然後套用 Quest Log Window Hotkey 元件。

玩家按下特定按鍵可開啟 Quest log window 視窗。

 

按下 Play 測試遊戲,按下預設的快速鍵 J 開啟 Quest Log Window 視窗,目前是沒有任務的情況。

可以選擇不同的 Quest Log Window 視窗設計。

下圖為 Wheel Standard UI Quest Log Window 外觀。

 

Quest Fields

Name

對話資料庫中的任務名稱(當任務名稱較長時可使用 Display Name)

當下方 Use Display Name 未勾選時,此名稱將會顯示於遊戲畫面。

Use Display Name 未勾選時,顯示▲上面的名稱,勾選則顯示▼下面的名稱。
Display Name
當 Use Display Name 勾選時,此名稱將顯示於遊戲畫面。
Use Groups 勾選 Use Groups 時,可以設定任務群組,Quest log window 分組顯示。
Group 勾選 Use Groups 時,將出現此 Group 文字欄位,可輸入任務群組名稱。
State

此任務的開始狀態 (unassgined, active, success, failure, abandoned)

Trackable

任務顯示於畫面的 Quest tracker HUD,玩家可以追蹤任務的 ON / OFF

Track On Start 當任務啟用時,將會立即顯示於 Quest tracker HUD(預設在畫面右上方)
Visible

(Optional; add Boolean field in All Fields section)

If true, don't show in quest log window. Assumes you've ticked Check Visible Field in your Standard UI Quest Log Window.

Abandonable 玩家是否可以放棄此任務?
Has Entries 此任務是否擁有子任務 (Subtasks)?
Description 此任務的描述內容,當任務為 active 時顯示於 Quest log Window 視窗。
Success Description

當任務為 Success 時顯示的訊息,若空白將只會顯示 Description 的內容。

Failure Description

當任務為 Failure 時顯示的訊息,若空白將只會顯示 Description 的內容。

Entry # 當 Has Entries 勾選時,設定 Entry(子任務)的描述。
Entry # State 設定 Entry(子任務)的初始狀態

 

使用 UI 按鈕開啟 Quest log window 視窗

 

修改 Quest log window 視窗外觀

Dialogue System 收錄 2 個 Quest log window 視窗:

★★

預設的 Quest log window 視窗外觀比較單調,可以自行修改此視窗的外觀設計。

選取 Basic Standard UI Quest Log Window 後按鍵盤 Ctrl+D 複製出另一個預製物件。

將複製產生的預製物件重新命名為 My UI Quest Log Window 。

拖曳到 Dialogue System Controller > Instantiate Prefabs 的 Prefabs > Element 2 欄位。

 

控制任務

在對話過程控制任務

您可以對話中使用 Point-and-Click 檢查與設定任務的狀態:

unassigned 未指定 / active 進行中 / abandoned 放棄 / success 成功 / failure 失敗

 

任務 Lua 函式

若需要直接撰寫 Lua code 管理任務,請參考以下表格:

功能 說明 範例
CurrentQuestState(questName) 回傳任務狀態 CurrentQuestState("Kill 5 Rats") == "active"
SetQuestState(questName, state) 設定任務狀態 SetQuestState("Kill 5 Rats", "success")
CurrentQuestEntryState(questName, entryNum) 回傳任務入口狀態 CurrentQuestEntryState("Escape", 2) == "active"
SetQuestEntryState(questName, entryNum, state) 設定任務入口狀態 SetQuestEntryState("Escape", 2, "success")

注意!您可以定義變數 unassgined, active, success, failure, abandoned

 

Quest Management Triggers

您可以使用以下元件控制任務:

 

官方任務教學 [ Youtube ]

官方學習資源 [ 網頁 ]

練習的資源包 [ 下載 ]

開啟 [ Pixel Crushers Tutorial Assets > 2D > Scenes ] 資料夾的 Base Turorial Scene 場景。

此場景包含 Player 玩家角色、Villager 村民、Crate 寶箱,建議將此場景另存新檔,保留原始場景。

將 Dialogue Manager 預製物件拖曳到場景,建立新的對話資料庫。並指定給 Dialogue Manager 物件。

開啟對話資料庫,切換到 Actors 分頁標籤,新增 Merchant 商人,可以設定 Portrait Sprites 頭像。

 

新增任務

玩家需要幫商人收集 3 個遺失的箱子,完成此任務。

切換到 Variables 變數分頁標籤,按 + 新增變數 Crates.NumCollected (Number)

切換到 Quests/Items 分頁標籤,按 + 新增任務 Creates 透過 Inspector 進行設定:

Use Display Name = true

Display Name = Find the Crates

Trackable = true

Track on Start = true

Has Entries (Subtasks) = true

Description = 商人要求幫忙尋找 3 個遺失的箱子

Sucess Description = 商人遺失的箱子已經全部找到了!

Failure Description =

設定完成後,按下 Add New Quest Entry 按鈕,設定 Entry 1 的 State = active

我們需要顯示已找到的箱子數量,回到對話資料庫管理的 Quests/Items 分頁標籤,選取 Crates 任務,在 Inspector 的 Entry 1 欄位輸入 [var=Crates.NumCollected]/3 Collected

接著建立新對話,遊戲將在玩家與商人對話時,接下此任務,切換到 Conversations 分頁,按 + 建立新對話。

<START>

[1.你可以幫忙尋找我昨天遺失的 3 個寶箱嗎?]
[沒問題,交給我吧!]

[2.你有找到寶箱了嗎?]
[找到了!] > [太棒了!謝謝]
[還沒有!]

[3.感謝你上次的幫忙。]

選擇 [1.] 對話節點,然後在 Inspector 的 Conditions 欄位按 ... 按鈕,再按 + 新增 Quest 任務:

確認 Crates . is . unassigned 後按下 Apply 轉換為 CurrentQuestState("Crates") == "unassigned"

選擇 [沒問題,交給我吧!] 對話節點,然後在 Inspector 的 Script 欄位按 ... 按鈕,按 + 新增腳本:

設定 Quest . Crates . to . active

再按 + 新增 Alert = "新任務:幫商人尋找寶箱!"(★玩家跟商人說話後接受新任務並彈出訊息)

 

您可以在遊戲物件上使用 Increment On Destroy 元件來增加變數的數值。

 

Quest Log Window 任務記錄視窗

任務記錄視窗可顯示玩家的活動與完成的任務,可使用 Standard UI Quest Log Window 元件設定此視視窗。

( Component > Pixel Crushers > Dialogue System > UI > Standard UI > Quest > Standard UI Quest Log Window )

 

任務群組

當任務的數量較多時,建議使用群組進行任務分類。以下圖為例,未分類的任務將會看起來比較混亂。

 

將群組名稱的編號改為相同的位數,即可解決順序錯誤的問題。

任務群組展開的情況。

更換為 Wheel Standard Quest Log Window

 

Share 官方教學資源包