學生姓名 陳文茜
學號 111010539
指導老師 趙于翔
學校系所 國立金門大學資訊工程學系四年級
學年度 113學年度第二學期
本專題旨在設計並實作一套 2D 劇情對話系統,作為劇情導向型遊戲的重要核心模組。透過 Unity 平台進行開發,系統採用資料驅動架構,支援角色對話、旁白展示、選項跳轉、道具呈現、場景轉場等功能,具備良好的模組化與擴充性。
隨著遊戲產業的發展,劇情型遊戲逐漸受到重視,許多成功作品皆以豐富的故事性與角色互動為核心。本人長期對小說創作與互動式敘事有濃厚興趣,也遊玩過多款融合探索與劇情推進的遊戲作品,逐漸萌生了「將故事轉化為可玩內容」的想法。
然而,相較於成熟的遊戲開發框架,初學者在製作原創遊戲時,往往缺乏一套可重複利用、易於擴充的劇情播放系統。因此,本專題希望結合所學,從系統架構的角度出發,打造一套具模組化、資料驅動特性的 2D 對話系統,作為日後敘事型遊戲開發的核心基礎。
本專題的主要目的是開發一套可支援遊戲內劇情展示的完整對話系統模組,具備以下幾項核心功能:
透過本專題的實作,不僅能奠定劇情系統的基礎結構,也可作為學習 Unity 架構化開發的實務經驗累積。
本系統採用模組化架構,透過核心控制器(如 DialogueManager)串聯各功能模組,實現劇情播放、畫面切換與 UI 控制的分層管理。
| 模組名稱 | 功能說明 |
|---|---|
| DialogueManager.cs | 控制整體劇情流程,包括 JSON 載入、逐行播放、觸發轉場與道具展示 |
| UIManager.cs | 管理整體 UI 顯示與濾鏡效果等,為全局控制器 |
| DialogueUIManager.cs | 管理對話專屬 UI,如對話框、旁白框、選項與道具顯示等 |
| PortraitManager.cs | 控制角色立繪的載入、切換、滑入滑出動畫與表情變化 |
| TransitionPanelController.cs | 控制黑幕轉場與文字轉場效果 |
| PropsDatabase.cs | 負責道具 JSON 的解析與管理,支援多類型道具顯示 |
| 各 UI Controller | 管理各 UI prefab 的顯示邏輯與動畫,實現高度模組化 |
Unity(URP 模板)
JSON
Adobe Photoshop
Adobe Premiere Pro、剪映 Pro
C#
{
"dialogues": [
{
"type": "dialogue",
"character": "主角",
"portrait": "main_normal",
"position": "left",
"text": "這是一段對話示例,展示系統的基本功能。",
"background": "classroom"
},
{
"type": "aside",
"text": "這是旁白文字,用於描述場景或角色內心活動。"
},
{
"type": "dialogue",
"character": "NPC",
"portrait": "npc_smile",
"position": "right",
"text": "你可以透過選項來決定劇情走向。"
},
{
"type": "choice",
"options": [
{
"text": "選項一",
"nextIndex": 4
},
{
"text": "選項二",
"nextIndex": 5
}
]
},
{
"type": "prop",
"propId": "key_item",
"text": "獲得了一把鑰匙!"
}
]
}
本專題成功建構出一套模組化的 2D 劇情對話系統,已實現角色對話、旁白展示、選項跳轉、道具呈現與黑幕轉場等核心功能,支援使用 JSON 控制劇情流程,具備良好的彈性與可擴充性。系統整體結構清晰,UI 元件與邏輯分離,能獨立管理並重複利用各種功能模組。
在開發過程中,針對立繪與背景切換、打字動畫與過場時序等常見問題進行除錯與優化,並整合多種工具輔助素材製作,如 Photoshop、剪映 Pro 等。雖未完成完整遊戲內容,但系統已達穩定運作階段,可作為後續敘事型遊戲開發之基礎架構。
實際系統截圖
本專題已成功完成對話系統之主要功能模組,包括對話與旁白顯示、角色立繪控制、黑幕轉場、選項跳轉、道具展示等。系統以 JSON 為資料來源,並建構了模組化的 UI 控制邏輯與獨立腳本架構。
除基礎功能外,亦完成 SplashScene、LoadingScene 與 DialogueScene 的整合流程,具備一套初步可執行的劇情體驗流程。
在實作過程中,曾遭遇立繪無法正確顯示、動畫重複觸發、背景切換錯誤、黑幕與文字動畫時序不同步等問題。透過錯誤定位與模組重構,逐步調整加載順序與邏輯判斷,並加入回調機制確保動作同步完成。
此外,LoadingScene 中影片與進度條爭用資源的問題,亦透過腳本整合解決。
透過本專題的實作,奠定了互動式敘事系統的核心架構,並為日後更完整的遊戲製作打下堅實基礎。
國立金門大學資訊工程學系四年級學生,專注於遊戲開發與互動敘事設計。對小說創作與互動式敘事有濃厚興趣,致力於將故事轉化為可玩內容。