2D游戏剧情对话系统
设计与实作

學生姓名 陳文茜

學號 111010539

指導老師 趙于翔

學校系所 國立金門大學資訊工程學系四年級

學年度 113學年度第二學期

專題簡介

本專題旨在設計並實作一套 2D 劇情對話系統,作為劇情導向型遊戲的重要核心模組。透過 Unity 平台進行開發,系統採用資料驅動架構,支援角色對話、旁白展示、選項跳轉、道具呈現、場景轉場等功能,具備良好的模組化與擴充性。

對話系統 JSON 資料驅動 Unity 模組化設計 {} { }

專題介紹

研究背景與動機

隨著遊戲產業的發展,劇情型遊戲逐漸受到重視,許多成功作品皆以豐富的故事性與角色互動為核心。本人長期對小說創作與互動式敘事有濃厚興趣,也遊玩過多款融合探索與劇情推進的遊戲作品,逐漸萌生了「將故事轉化為可玩內容」的想法。

然而,相較於成熟的遊戲開發框架,初學者在製作原創遊戲時,往往缺乏一套可重複利用、易於擴充的劇情播放系統。因此,本專題希望結合所學,從系統架構的角度出發,打造一套具模組化、資料驅動特性的 2D 對話系統,作為日後敘事型遊戲開發的核心基礎。

研究目的

本專題的主要目的是開發一套可支援遊戲內劇情展示的完整對話系統模組,具備以下幾項核心功能:

  • 支援角色對話、旁白、選項跳轉與道具展示等基本互動需求
  • 採用 JSON 格式作為資料來源,實現劇情撰寫與維護的彈性
  • 建立獨立的 UI 元件控制架構,達成模組化、易維護的系統設計
  • 完整整合啟動畫面、載入場景、過場轉場與角色立繪控制流程
  • 作為未來完整敘事遊戲之核心,便於後續功能拓展與內容填充

透過本專題的實作,不僅能奠定劇情系統的基礎結構,也可作為學習 Unity 架構化開發的實務經驗累積。

系統設計與實作

系統架構圖

SplashSceneController LoadingSceneController DialogueManager UIManager DialogueUIManager TransitionPanelController PortraitManager DialoguePanelController AsidePanelController 系統核心模組關係圖

本系統採用模組化架構,透過核心控制器(如 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#

JSON 劇情配置示例

{
  "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 中影片與進度條爭用資源的問題,亦透過腳本整合解決。

未來的改進方向

  • 強化 UI 與立繪美術表現,如美術風格統一與字體配置優化
  • 增加劇情中動畫與音效觸發,提升敘事臨場感
  • 簡化部分控制腳本結構,優化命名與模組拆分
  • 擴充支線跳轉與條件分支邏輯,支援更複雜的互動設計
  • 發展為完整敘事遊戲框架,整合角色互動、道具收集與關卡邏輯等功能

透過本專題的實作,奠定了互動式敘事系統的核心架構,並為日後更完整的遊戲製作打下堅實基礎。

關於我

陳文茜

國立金門大學資訊工程學系四年級學生,專注於遊戲開發與互動敘事設計。對小說創作與互動式敘事有濃厚興趣,致力於將故事轉化為可玩內容。

a0968189382@gmail.com