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
使用 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 管理任務,請參考以下表格:
注意!您可以定義變數 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 官方教學資源包 |