「UnityでCSVを使ってテキストを管理したい」
「ノベルゲームのシナリオを、コードから分離して管理したい」
「外部データを読み込む実装方法を知りたい」
このような悩みを持つ方向けに、Unityでノベルゲームを制作することを前提として、CSVファイルからテキストデータ(シナリオ)を読み込む実装方法を解説します。
✨ この記事でわかること
- ノベルゲームでCSVファイルを使ってシナリオを管理するメリット
- CSVファイルを読み込む基本的な実装方法(コード例付き)
- CSVを使ったシナリオ管理システムの作り方
- コードを変更せずにシナリオを更新する方法
- ノベルゲーム制作における効率的なデータ管理のコツ

シナリオ管理を楽にするために、まずは基本的なCSV読み込み方法から確認していきましょう。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。
CSVファイルを使ったノベルゲーム向けシナリオ管理のメリット

ノベルゲームでは、シナリオ(セリフや文章)の量が多くなりがちです。
CSVファイルを使えば、シナリオをコードから分離し、効率的に管理できます。
✅ CSVファイルを使うメリット
- シナリオをコードから分離:ノベルゲームのセリフをスクリプトに直接書かずに管理できる
- 更新が簡単:コードを修正せず、CSVを書き換えるだけでシナリオを変更できる
- 管理がしやすい:Excelやスプレッドシートで直感的に編集できる
- 多言語対応が簡単:言語ごとにCSVを分けるだけで翻訳データを管理できる
CSVを使えば、ノベルゲームのシナリオをシナリオライターが直接編集できます。
そのため、プログラマーが毎回コードを変更する必要がなくなり、制作効率が大きく向上します。
CSV読み込み処理の実装方法

ここでは、ノベルゲームのシナリオをCSVから読み込む処理を実装します。
CSVを使うことで、セリフや文章をコードから分離して管理できるようになります。
所要時間は2時間程度です。
ステップ1:CSVファイルの準備(所要30分)
まずは、ノベルゲームのシナリオを記述するCSVファイルを作成します。
以下の内容で dialogue.csv を用意してください。
|
1 2 3 4 |
ID,Character,Text,NextID 0,主人公,こんにちは、ノベルゲームの世界へようこそ!,1 1,主人公,今日から一緒に冒険しましょう。,2 2,主人公,楽しみですね!,3 |
IDでシナリオの順番を管理し、NextID で次に表示するセリフを指定します。
ステップ2:CSV読み込みスクリプトの作成(所要1時間)
次に、CSVファイルを読み込むスクリプトを作成します。
以下のコードを CSVReader.cs として作成し、コピー&ペーストしてください。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
using UnityEngine; using System.Collections.Generic; using System.Linq; [System.Serializable] public class DialogueData { public int id; public string character; public string text; public int nextID; } public class CSVReader : MonoBehaviour { public TextAsset csvFile; private List<DialogueData> dialogues = new List<DialogueData>(); void Start() { LoadCSV(); } void LoadCSV() { string[] lines = csvFile.text.Split('\n'); for (int i = 1; i < lines.Length; i++) { if (string.IsNullOrWhiteSpace(lines[i])) continue; string[] values = lines[i].Split(','); DialogueData data = new DialogueData { id = int.Parse(values[0]), character = values[1], text = values[2], nextID = int.Parse(values[3]) }; dialogues.Add(data); } } public DialogueData GetDialogue(int id) { return dialogues.FirstOrDefault(d => d.id == id); } } |
コードの説明
DialogueData:ノベルゲームのセリフ情報をまとめたデータクラスLoadCSV():CSVファイルを読み込み、リストに格納する処理GetDialogue():IDを指定して対応するシナリオデータを取得するメソッド
ステップ3:CSVファイルの設定(所要30分)
- 作成したCSVファイルを「Assets」フォルダに配置
- CSVファイルをUnity上で Text Asset として認識させる
- CSVReaderスクリプトをアタッチし、Inspectorの「CSV File」にCSVを指定
以上で、ノベルゲーム用のCSV読み込み処理が完成します。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる
ノベルゲーム向けシナリオ管理システムの作り方

ここでは、CSVから読み込んだシナリオデータを使って、ノベルゲーム用のシナリオ管理システムを作成します。
スペースキーでセリフを進める、シンプルなノベルゲームの基本構成です。
所要時間は2時間程度です。
ステップ1:シナリオ管理クラスの作成(所要1時間)
まずは、シナリオの表示と進行を管理するクラスを作成します。
以下のコードを ScenarioManager.cs として作成し、コピー&ペーストしてください。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
using UnityEngine; using TMPro; public class ScenarioManager : MonoBehaviour { public CSVReader csvReader; public TextMeshProUGUI dialogueText; private int currentDialogueID = 0; void Start() { ShowDialogue(currentDialogueID); } void Update() { if (Input.GetKeyDown(KeyCode.Space)) { NextDialogue(); } } void ShowDialogue(int id) { DialogueData data = csvReader.GetDialogue(id); if (data != null) { dialogueText.text = data.character + ": " + data.text; } } void NextDialogue() { DialogueData currentData = csvReader.GetDialogue(currentDialogueID); if (currentData != null) { currentDialogueID = currentData.nextID; ShowDialogue(currentDialogueID); } } } |
コードの説明
ScenarioManager:ノベルゲームのシナリオ進行を管理するクラスShowDialogue():指定したIDのセリフを画面に表示するNextDialogue():CSVのNextIDを使って次のセリフに進む
ステップ2:実行して動作を確認(所要1時間)
- Unityエディタで再生ボタン(▶)を押す
- CSVから読み込んだシナリオが画面に表示されることを確認
- スペースキーを押すと、次のセリフに進むことを確認

問題なく動作すれば、CSVを使ったノベルゲーム用シナリオ管理システムは完成です。
データの更新方法

CSVファイルを更新する方法を解説します。
所要時間は30分程度です。
Excelで編集する方法
CSVファイルは、Excelで編集できます。
- CSVファイルをExcelで開く
- セリフを編集
- 保存(CSV形式で保存)
- Unityで再読み込み
この方法で、コードを変更せずにシナリオを更新できます。
多言語対応
言語ごとにCSVファイルを用意すれば、多言語対応が簡単です。
例:
- dialogue_jp.csv(日本語)
- dialogue_en.csv(英語)
言語に応じて、読み込むCSVファイルを切り替えます。
効率的なデータ管理のコツ

効率的なデータ管理のコツを解説します。
- CSVファイルを分割:章ごとにCSVファイルを分ける
- ID管理:IDを連番で管理する
- バックアップ:CSVファイルを定期的にバックアップ
この方法で、効率的にデータを管理できます。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる
さらに高度なデータ管理手法を学ぶなら

さらに高度なデータ管理手法を学びたい方は、Unity入門の森で実践的なスキルを身につけましょう。
ノベルゲーム制作に特化した講座も用意されています。
よくある質問

あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。
まとめ

UnityでCSVファイルからテキストデータを読み込む実装方法を解説しました。
CSVを使えば、シナリオをコードから分離できます。
所要時間は2時間程度で、CSV読み込み処理が実装できます。
さらに高度なデータ管理手法を学びたい方は、Unity入門の森で実践的なスキルを身につけましょう。
✅ 今日から始める3ステップ
- STEP1:CSVファイルを作成(所要30分)
- STEP2:CSV読み込みスクリプトを作成(所要1時間)
- STEP3:シナリオ管理システムを作成(所要1時間)
本格的にUnityを学びたい方は、Unity入門の森で実践的なスキルを身につけましょう。
あなたのペースで、少しずつ進めていけば大丈夫です。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる



コメント