← Back to list

互動劇情的好幫手 — 敘事腳本語言 Ink!(2)

匯入Unity,遊戲開始!

遊戲羅伊 · 2021-11-02 03:12 · 107 claps · 5.1 min read
#unity #dialog #劇情 #對話 #教學
Open on Medium ↗
Wiki topics: 🎮 · Gaming

互動對話劇情的好幫手 — 敘事腳本語言 Ink!(2)

匯入Unity,遊戲開始!

今天要完成的 project,對話系統

今天要完成的 project,對話系統

哈囉!我是遊戲羅伊,今天進入到了 Ink 第二個章節,我們要來做的是把 Ink 腳本匯入 Unity ,寫出一個最基本的對話系統!讓遊戲可以順利進行!事不宜遲,我們趕快開始!

本次教學使用 Unity 版本為 2020.3.11f1

開始前記得把 Ink 的 Unity Package 加到你的帳號裡面! https://assetstore.unity.com/packages/tools/integration/ink-unity-integration-60055

第二章 — 進入 Unity

1 —匯入 Package

在開始製作前,當然要記得匯入 *Ink Unity Integration* 囉!也就是上面要你加入帳號的 Package,接下來我們進到 Unity 裡面操作:

在上方 Windows 選項下找到 Package Manager

在上方 Windows 選項下找到 Package Manager

切換到 My Assets 分頁

切換到 My Assets 分頁

可以透過右上角搜尋;點擊右下角 Import ,匯入到專案中!

可以透過右上角搜尋;點擊右下角 Import ,匯入到專案中!

這樣你應該可以在 Assets 資料夾下發現匯入的 Ink,代表成功匯入囉!

這樣你應該可以在 Assets 資料夾下發現匯入的 Ink,代表成功匯入囉!

2 — 測試 ink 檔案

首先,我們可以先把上次教學做的 .ink 檔案放到 Unity 編輯器裡面:

丟進去後,你會發現它自動變成兩個檔案!這是因為我們在第一小節安裝的 Package 做事了!它幫我們自動地把 ink 檔案轉換成 json 檔,方便我們的 Unity 去做操作。

接下來,我們可以開啟 ink 在 unity 的測試撥放器:

而這個撥放器,就可以拿來模擬我們使用 Inky 的狀態,也可以看到一些參數,這樣就可以知道你的腳本是不是成功能在上面跑了!

最上面可以放入指定 JSON,而下方資訊就跟上次的教學一樣可以選擇。

最上面可以放入指定 JSON,而下方資訊就跟上次的教學一樣可以選擇。

3 — Unity C# 腳本!

會看到這篇文章的你,是想做一個對話框吧!那麼我們就來建立幾個 Object ,分別是-對話框、文字、四個選項、下一段對話的按鈕:

接下來我們來建立一個腳本,叫做 DialogManager,寫上一些變數,並把它掛在 DialogSystem上:

[embed]第 7 行為對話框文字;第 8 行選項按鈕;第 9 行為 json 檔;第 10 行為 ink 套件的 Story 物件

將腳本需要的元件拖到 Inspector 上

將腳本需要的元件拖到 Inspector 上

Story 是什麼樣的一個 Class?它會負責處理 Ink 腳本的流程,並幫助你快速的在 Unity 內建立起它。

初始化完成!接下來我們來寫更多的 Function:

[embed]

第一個 Function 是 StartDialog,我們將 JSON 檔當作參數傳入,並判斷是否可以成功開啟新的 Story 來,用來開始一串新的對話。

第二個 Function 是 NextDialog,用來進到下一句對話,第8行一樣判斷目前是否有正在執行的對話;第9行判斷是否還有下一句對話,沒有就清空Story;第14行在發現有選項時,呼叫 SetChoices()(稍後會帶到);第15行則判斷是否有下一句對話,並將其放入 UI 的文字中。

還記得上一章的 tag 系統嗎?如果你想用的話,可以使用:

Story.currentTags — 會回傳目前對話被標記的 Tags,回傳是 List<string>

最後程式的部份,我們來看看設置選項,以及如何選擇選項吧!

[embed]

第一個 Function 是 SetChoices,在這邊我們依照選項數量,去 Active 相對應的按鈕,並將按鈕文字設為選項文字。

第二個 Function 是 MakeChoice,我們會傳入參數 index 來選擇要使用哪一個選項,透過第 9 行的 ChooseChoiceIndex(int) 來告訴 Story 你的選擇,在選擇後隱藏按鈕們,在第13行進入下一個對話。

再來設定按鈕的 Function,記得依照順序參數為0、1、2、3。

還有,執行下一句對話的按鈕也要記得設定。

完成啦!

當然你自己要做任何修改,也都可以唷! 像是這邊我把對話改成了逐字出現,是不是看起來更棒呢?

這就是一個簡單的對話框囉!恭喜你!接下來可以自己做修改,讓對話框能顯示說話角色或透過鍵盤操作!這篇教學就到這邊囉,我們下次再見!

UI素材使用: https://assetstore.unity.com/packages/2d/gui/fantasy-wooden-gui-free-103811

程式文件參考: https://github.com/inkle/ink/blob/master/Documentation/RunningYourInk.md#marking-up-your-ink-content-with-tags


메타데이터
post_id
d24eb033de80
slug
互動劇情的好幫手-敘事腳本語言-ink-2-d24eb033de80
url
https://medium.com/@GamingRoy/%E4%BA%92%E5%8B%95%E5%8A%87%E6%83%85%E7%9A%84%E5%A5%BD%E5%B9%AB%E6%89%8B-%E6%95%98%E4%BA%8B%E8%85%B3%E6%9C%AC%E8%AA%9E%E8%A8%80-ink-2-d24eb033de80
canonical_url
https://medium.com/@GamingRoy/%E4%BA%92%E5%8B%95%E5%8A%87%E6%83%85%E7%9A%84%E5%A5%BD%E5%B9%AB%E6%89%8B-%E6%95%98%E4%BA%8B%E8%85%B3%E6%9C%AC%E8%AA%9E%E8%A8%80-ink-2-d24eb033de80
author_url
https://medium.com/@GamingRoy
status
ok
fetched_at
2026-07-27 21:01:28