UnityUnityメモ

Unityで外部CSVファイルを読み込む方法|初心者向けにわかりやすく解説!

Unity

1. はじめに

みなさん、こんにちは!
今回はUnityでCSVファイルを読み込む方法についてわかりやすく紹介していきます。

「え、ゲームにCSV?何それ?」って思った方もいるかもしれませんね。
でも実は、CSVファイルってゲーム開発ではけっこう便利なんです!


たとえば…

  • プレイヤーのスコアデータを一覧で管理したいとき
  • キャラクターの名前やステータスをまとめて外部で管理したいとき
  • ゲームの難易度ごとの設定値を外のファイルで変えたいとき

こういうとき、CSVを使うととっても楽になります!

しかも、CSVファイルはテキストエディタやExcelなどでも簡単に編集できるから、プログラムをいちいち書き直す必要がなくなるんですよ。


今回は初心者の方でも「なるほど!こうすればCSVデータが読み込めるんだ!」とスッキリ理解できるように、

  • CSVファイルの作り方
  • Unityに読み込む方法
  • 読み込んだデータを使ってみる

…といったステップを順番にわかりやすく説明していきます。

それじゃあ、さっそく始めていきましょう!💪😊




2. 準備するもの

CSVをUnityで読み込むために、まずは必要なものをそろえておきましょう!
難しいものはないので安心してくださいね😊

✅ ① CSVファイル

まずは読み込むCSVファイルを用意しましょう。

CSV(シーエスブイ)っていうのは、カンマで区切られたテキストファイルのことです。
たとえば、こんな感じの内容になります:

Name,Score
Player1,100
Player2,200
Player3,150

このファイルは「名前」と「スコア」がセットになっていて、データが横に並んでいます。
ExcelやGoogleスプレッドシートで作って、「CSV形式で保存」すればOKです。

**ファイル名は「sample.csv」**など、わかりやすい名前にしておきましょう。


✅ ② Unityプロジェクト

Unityのバージョンは特に指定しませんが、Unity 2020以降を使っていれば問題ありません。

すでにプロジェクトがある方はそのままでOK。
新しく作ってもいいですよ。


✅ ③ StreamingAssetsフォルダ

CSVファイルをUnityに読み込んでもらうには、特定のフォルダに置く必要があります。
それが 「StreamingAssets(ストリーミングアセット)」 フォルダです。

以下の手順で作成してください:

  1. Unityの「Project」ウィンドウで Assets フォルダを探します
  2. Assets右クリック → 「Create」→「Folder」を選びます
  3. フォルダ名を 「StreamingAssets」 にします(スペルミス注意!)

このフォルダの中に、さっきの CSVファイル(例:sample.csv) をドラッグ&ドロップで入れておきましょう。

これで準備はバッチリです!🎉
次は、実際にUnityのスクリプトでCSVを読み込む方法を見ていきましょう!




3. CSVファイルの例

では実際にUnityで使うためのCSVファイルを用意してみましょう!

今回は、プレイヤーの名前とスコアが書かれたシンプルなCSVファイルを使って説明していきます。
こんなふうにテキストエディタやExcelで書いてみてください👇

Name,Score
Player1,100
Player2,200
Player3,150

このファイルの意味は、

  • 1行目が**項目名(ヘッダー)**で、「名前」と「スコア」を表しています。
  • 2行目以降は実際のデータです。

とってもシンプルですね!


✅ テキストエディタで作る場合

  1. 「メモ帳(Windows)」や「テキストエディット(Mac)」などを開きます
  2. 上の内容をコピペします
  3. **「sample.csv」**という名前で保存します
    • ※ 文字コードはUTF-8がおすすめ(日本語を使う場合)

✅ Excelやスプレッドシートで作る場合

  1. ExcelやGoogleスプレッドシートで、名前とスコアを入力
  2. 「ファイル」→「名前を付けて保存」または「ダウンロード」→「CSV形式(.csv)」を選ぶ
  3. 「sample.csv」という名前で保存

✅ 保存場所はどこ?

保存したCSVファイルは、さきほど作った**「StreamingAssets」フォルダの中**に入れておいてくださいね。

こうすることで、Unityのスクリプトからファイルのパスを自動で探してくれるようになります✨

これでCSVファイルの準備もOK!
次はいよいよ、スクリプトを書いてCSVデータを読み込む方法を見ていきましょう。わかりやすく解説していきますよ~💻📄




4. StreamingAssetsフォルダの作成

CSVファイルをUnityで正しく読み込むには、特定の場所にファイルを置く必要があります。
その場所が**「StreamingAssets」フォルダ**なんです!

Unityはこのフォルダの中にあるファイルを、そのままの形でゲーム内から読み込むことができるようになっています。
特別な処理をしなくても使えるので、CSVファイルの読み込みにピッタリです👍


✅ StreamingAssetsフォルダの作り方

では、実際にフォルダを作ってみましょう!

  1. Unityの画面下にある「Project(プロジェクト)ウィンドウ」を探してください
  2. Assets フォルダを右クリックします
  3. Create(作成)」→「Folder(フォルダ)」を選びます
  4. フォルダ名を 「StreamingAssets」 と入力します(※スペル間違いに注意!)

👆 これでフォルダができました!


✅ CSVファイルを入れよう!

次に、用意した sample.csv などのCSVファイルを
この「StreamingAssets」フォルダにドラッグ&ドロップしてください。

💡 フォルダ構成はこんな感じになります:

Assets
└─ StreamingAssets
└─ sample.csv

この形になっていれば準備完了です!🎉


✅ 注意ポイント

  • 「StreamingAssets」は 大文字と小文字が区別されるので必ず正確に書いてください!
  • 他の場所(例:Assets直下やResourcesフォルダ)に置いても、今回のやり方では正しく読み込めません。

これでCSVファイルの設置はバッチリです!
次はいよいよ、C#スクリプトでこのファイルを読み込む方法を実践していきましょう💡




5. C#スクリプトでCSVを読み込む方法

さて、ここからは実際にCSVファイルを読み込むためのスクリプトを書いていきましょう!

「プログラミングって難しそう…😢」という方も、手順通りにやれば大丈夫!
ひとつひとつ丁寧に進めていきますよ〜!


✅ スクリプトを作成しよう!

まずは新しいスクリプトファイルを作ります。

  1. 「Project」ウィンドウで空いているところを右クリック
  2. Create」→「C# Script」を選びます
  3. 名前は 「CSVReader」 と付けましょう(←これで読み込み用スクリプトになります)

✅ スクリプトの中身を書こう!

作成した「CSVReader」スクリプトをダブルクリックして開き、次のコードを入力してみてください👇

using System.Collections.Generic;
using System.IO;
using UnityEngine;

public class CSVReader : MonoBehaviour
{
void Start()
{
// StreamingAssetsフォルダのCSVファイルパスを取得
string filePath = Path.Combine(Application.streamingAssetsPath, "sample.csv");

// ファイルを読み込む
if (File.Exists(filePath))
{
string[] lines = File.ReadAllLines(filePath);

foreach (string line in lines)
{
string[] values = line.Split(',');
Debug.Log("Name: " + values[0] + ", Score: " + values[1]);
}
}
else
{
Debug.LogError("CSVファイルが見つかりませんでした: " + filePath);
}
}
}

✅ このコードのポイント!

  • Application.streamingAssetsPathStreamingAssetsフォルダの場所を自動で取得してくれます
  • File.ReadAllLines() でCSVファイルを1行ずつ読み込んで配列にすることができます
  • 各行をカンマ , で分割することで、名前やスコアを取り出すことができます

✅ スクリプトをアタッチしよう!

このスクリプトを使うには、空のGameObjectにアタッチする必要があります。

  1. ヒエラルキー(Hierarchy)ウィンドウで 右クリック → 「Create Empty」を選んで空のオブジェクトを作成
  2. 名前を「CSVManager」などにしておくとわかりやすいです
  3. 作成した「CSVReader」スクリプトを、ドラッグ&ドロップでこのオブジェクトにアタッチ!

🎉これで準備完了です!


✅ 実行してみよう!

「▶再生ボタン(プレイ)」を押して、Unityのコンソールをチェックしてみましょう!

こんなふうに表示されていれば、CSVファイルがちゃんと読み込めています!バッチリですね🙌




6. 読み込んだデータの使い方

CSVファイルを無事に読み込めたら、次はそのデータをどう使うかを考えてみましょう!
読み込んだ情報をゲームに活かす方法はいろいろあります。

ここでは、スコアを表示したり、ソート(並び替え)したりする簡単な例を紹介します!


✅ ① 読み込んだ内容を見やすく表示する

前のスクリプトでは、ただCSVの内容をそのまま Debug.Log で表示していました。
でも、もっと見やすく整理して表示することもできます。

たとえば、こんな感じ👇

foreach (string line in lines)
{
string[] values = line.Split(',');

// ヘッダー行(最初の行)はスキップ
if (values[0] == "Name") continue;

string name = values[0];
int score = int.Parse(values[1]);

Debug.Log($"{name} のスコアは {score} 点です!");
}

実行すると、Unityのコンソールにこんなふうに表示されます:

ちょっと読みやすくなりましたね😊


✅ ② スコア順に並び替えて表示する

「誰が一番スコア高いのか知りたい!」というときは、**スコア順に並び替える(ソート)**のがおすすめです。

まずはデータを格納するためのクラスを作ります:

public class PlayerData
{
public string Name;
public int Score;
}

そしてスクリプトに以下のようなコードを追加してみましょう:

List<PlayerData> playerList = new List<PlayerData>();

foreach (string line in lines)
{
string[] values = line.Split(',');

if (values[0] == "Name") continue;

PlayerData player = new PlayerData
{
Name = values[0],
Score = int.Parse(values[1])
};

playerList.Add(player);
}

// スコアの高い順に並び替える
playerList.Sort((a, b) => b.Score.CompareTo(a.Score));

// 表示する
foreach (PlayerData p in playerList)
{
Debug.Log($"{p.Name}:{p.Score} 点");
}

これで、スコアの高い順に並んで表示されるようになります!🎉


✅ 応用アイデア

  • ランキング表示に使う
  • キャラクターのステータス管理
  • ステージ設定(敵の数や難易度)

など、CSVをうまく使うと、ゲームの中身を外部から柔軟に変更できるようになります!




7. よくあるエラーとその対処法

CSVの読み込みにチャレンジしていると、「あれ?読み込めない…」というエラーに出会うこともあります。
ここでは初心者がつまずきやすいポイントと、その解決法をまとめて紹介します!


❌ エラー① CSVファイルが見つからない

エラーメッセージ例:

CSVファイルが見つかりませんでした: /.../StreamingAssets/sample.csv

原因:

  • 「StreamingAssets」フォルダが存在しない or 名前のスペルミス
  • CSVファイルを正しい場所に置いていない
  • ファイル名が違う(例:「Sample.csv」など大文字小文字の違い)

解決法:

  • フォルダ名は必ず「StreamingAssets」と半角英字で正確に書く
  • CSVファイルはその中に入っているか確認
  • ファイル名をスクリプトと一致させる(大文字小文字も!)

❌ エラー② データの分割に失敗する

エラーメッセージ例:

IndexOutOfRangeException: Index was outside the bounds of the array.

原因:

  • 行にカンマ , が足りない
  • 空行や不正な行が含まれている

解決法:

  • CSVファイルの中をチェックして、すべての行がカンマで正しく区切られているか確認
  • 空行があれば削除
  • 先に行の長さをチェックしてからアクセスするように変更する:
if (values.Length >= 2)
{
string name = values[0];
int score = int.Parse(values[1]);
}

❌ エラー③ 日本語が文字化けする

原因:

  • ファイルの文字コードが UTF-8 以外になっている(例:Shift_JIS)

解決法:

  • CSVファイルをUTF-8 形式で保存し直す
    Excelやメモ帳の場合、保存時に文字コードの選択ができるツールを使うと便利です
    (たとえば「サクラエディタ」や「Notepad++」など)

❌ エラー④ モバイルでファイルが読めない

原因:

  • AndroidやiOSでは StreamingAssets のパスの扱いがPCと違う

解決法:

  • Android向けには UnityWebRequest を使って読み込む方法も検討する(今回はPC向け想定)

Unityではエラーが出ると下の「Console(コンソール)」ウィンドウにヒントが出ます。
赤文字の内容をしっかり読んで、何が起きているのかを確認してみましょう!
意外と、ちょっとしたスペルミスが原因だったりしますよ😊




8. 応用編:CSVデータをもっと便利に使ってみよう!

ここまでで、CSVファイルを読み込んで、データを表示したり並べたりするところまでできました🎉
でも、**「データを使いやすく管理したい」「ゲーム内で扱いやすくしたい」**と思ったことはありませんか?

ここでは、CSVのデータをもっと効率よく扱うための応用テクニックを2つ紹介します!


✅ 応用① ScriptableObjectに変換して使う

ScriptableObject(スクリプタブル・オブジェクト)は、データをオブジェクトとしてUnity上で管理できる便利な機能です。

CSVから読み込んだ情報を、ScriptableObjectに保存しておけば、インスペクター上から確認・変更できるようになります!

🎯 メリット

  • データの一覧がエディタ上で見られる
  • ゲームのデザイン作業がしやすくなる
  • スクリプトとデータの分離ができてスッキリ

💡 使い方イメージ

  1. PlayerData というScriptableObjectクラスを作る
  2. CSVで読み込んだ内容を PlayerData に変換
  3. ゲーム内で PlayerData を読み込んで使う

※ScriptableObjectについては別記事で詳しく紹介予定です♪


✅ 応用② データベース的に扱う

CSVの内容を**List(リスト)やDictionary(辞書)**に変換すれば、ゲーム中に検索やフィルタが簡単にできます!

たとえばこんなことができます👇

  • 名前でプレイヤーを検索:playerList.Find(p => p.Name == "Player2");
  • スコアが100以上のプレイヤーだけを取り出す:
    playerList.Where(p => p.Score >= 100); (LINQを使います)

🔎 こんなときに便利!

  • 育成ゲームでキャラステータスを管理したいとき
  • RPGで装備やアイテムの情報をデータベース化したいとき
  • ランキング機能など、スコアに応じた処理をしたいとき

✅ もっと本格的にやりたい人は?

  • 複雑なCSV構造に対応したいなら、CSVパーサーライブラリ(例:CsvHelper)を使うのもアリです!
  • 外部データ連携が多い場合は、JSON形式の読み込みにも挑戦してみると世界が広がります🌏

ここまで来たらもう、あなたも**CSVマスターの仲間入り✨**です!


🧩 さらに便利に!ローカライズ対応ならこのアセットがおすすめ!

もしあなたのゲームを日本語だけじゃなく、英語・中国語・スペイン語など多言語に対応させたいと思っているなら、
CSVファイルによるテキスト管理はとても相性が良いです!

そんなときにぴったりなアセットがこちら👇

🎯 I2 Localization – Unityのローカライズを超簡単にする神アセット

このアセットを使えば、

  • CSVやGoogleスプレッドシートで多言語テキストを一括管理
  • スクリプト不要でUIテキストを言語ごとに自動切り替え
  • モバイル、PC、コンソールなどあらゆるプラットフォームで使用可能

…と、Unityでのローカライズ作業が一気にプロレベルになります!

「世界中の人に自分のゲームを楽しんでほしい!」
そんな夢を叶えたいあなたに、ぜひ使ってみてほしいおすすめアセットです🌍✨




9. まとめ

今回は、Unityで外部CSVファイルを読み込む方法について、初心者の方にもわかりやすくステップバイステップで解説してきました!

もう一度、これまでの流れを振り返ってみましょう👇


✅ 今日の流れおさらい

  1. CSVファイルを用意する(名前やスコアなど、データをカンマで区切って記述)
  2. Unityの Assets 内に 「StreamingAssets」フォルダ を作成してCSVを保存
  3. C#スクリプトを作成して、CSVファイルを読み込むコードを書く
  4. 読み込んだデータを 表示・並べ替え・検索などに活用
  5. エラーが出たときは コンソールとスペルチェックがカギ!
  6. 応用編では、ScriptableObjectやデータベース的な使い方にも挑戦!

✅ CSVを使えるようになると…

  • 外部で管理できるから、プログラムをいじらずにゲームバランスを調整できる!
  • エクセルやスプレッドシートとの連携がしやすく、データの管理が楽になる!
  • キャラクターやステージ、アイテムの情報を柔軟に増やしたり変更したりできる!

といった、たくさんのメリットがあります✨

「CSVファイルって難しそう…」と思っていた方も、
この記事を読んで「意外とカンタンかも!やってみたい!」と思ってもらえたら嬉しいです😊




よくある質問(FAQ)

Q
CSVファイルに日本語を使ったら文字化けしました…
A

文字コードが「UTF-8」以外(たとえばShift_JISなど)になっていると、文字化けが起きます。
保存する際にUTF-8形式で保存するようにしてください。
メモ帳やサクラエディタ、Notepad++などを使うと簡単に変更できます。

Q
スマホアプリ(Android/iOS)でもCSVは使えますか?
A

はい、使えます!
ただし、モバイルでは StreamingAssets のパスの扱いが異なるため、UnityWebRequest を使って読み込む方法が必要になることがあります。

Q
改行やカンマを含むデータを扱うにはどうしたらいい?
A

Split(',') での分割は単純なCSVには使えますが、カンマや改行を含むデータには対応できません。
その場合は、専用のCSVパーサーライブラリ(例:CsvHelperやLumenWorksなど)を使うのがおすすめです。

タイトルとURLをコピーしました