UnityのScriptable ObjectをCSVに一括出力する方法【エディタ拡張の作り方】 | Unity入門の森 ゲームの作り方

UnityのScriptable ObjectをCSVに一括出力する方法【エディタ拡張の作り方】

UnityのTips

現場レベルのゲーム制作が、すべてここで学べます。

【永久会員チケット】

永久会員チケット|Unity入門の森

全講座を見放題で学ぶ

ソースコード・素材・プロジェクトすべて公開。
Unityの基礎から応用まで、一生使えるスキルを体系的に習得。

Unityでゲーム開発をしていると、ScriptableObjectで管理しているマスターデータやパラメータをCSV形式で出力したいケースがよくあります。企画者との連携や、外部ツールでのデータ編集、バックアップなど、様々な場面で役立ちます。

この記事では、フォルダ内のScriptableObjectを一括でCSVに出力するエディタ拡張の作り方を解説します。

【ゲームの作り方講座プレゼント中!】

この記事で作成するもの

今回作成するエディタ拡張には、以下の2つの出力機能があります:

  • 型ごとにまとめて出力: 同じ型のScriptableObjectを1つのCSVファイルにまとめる
  • 個別に出力: 各ScriptableObjectを別々のCSVファイルに出力

どちらの方法も、指定したフォルダ内の全ScriptableObjectを自動的に検索して出力します。

実装コード

以下のコードを Assets/Editor フォルダ内に ScriptableObjectToCSV.cs という名前で保存してください。

使い方

1. エディタウィンドウを開く

Unityエディタの上部メニューから Tools > Export ScriptableObjects to CSV を選択します。

2. フォルダを選択

エディタウィンドウが開いたら、「Target Folder」の欄にProjectビューからエクスポートしたいScriptableObjectが入っているフォルダをドラッグ&ドロップします。

3. エクスポート方法を選択

2つのボタンから出力方法を選べます:

「Export All to CSV (By Type)」

  • 同じ型のScriptableObjectを1つのCSVファイルにまとめます
  • 例: EnemyData型が10個あれば、EnemyData.csvという1つのファイルに全て出力されます
  • マスターデータとして管理したい場合に便利です

「Export Each to Separate CSV」

  • 各ScriptableObjectを個別のCSVファイルに出力します
  • 例: Enemy_Slime.assetEnemy_Slime.csvとして出力されます
  • 個別に管理したい場合に便利です

4. 保存先を選択

ボタンをクリックすると、CSVファイルの保存先フォルダを選択するダイアログが表示されます。任意のフォルダを選択してください。

5. 完了

エクスポートが完了すると、ダイアログで結果が表示されます。

 

↑このようにサブフォルダ内にあるデータもばっちりCSV化されてることがわかります。

実際に中身を見てみましょう。

こちらは「魔女と召喚獣」のゲームアプリの守りのベールのScriptable Objectです。

CSVデータにすると・・・

↑少し見づらいですがこのようにCSVデータとして表計算ソフトなどで開けています。

守りのベールの前にマジックボルトのカード情報も記載されていますね。

各ファイル同様に必要なデータ構造がScriptable ObjectからCSVとして出力されていることがわかります。

コードの解説

フォルダ内のScriptableObjectを検索

AssetDatabase.FindAssetsを使用して、指定フォルダ内(サブフォルダ含む)の全ScriptableObjectを検索しています。

型ごとにグループ化

リフレクションを使って各ScriptableObjectの型を取得し、Dictionaryでグループ化しています。

CSVへの変換

リフレクションでpublicフィールドを取得し、ヘッダー行とデータ行を生成しています。

特殊な値の処理

配列、リスト、Unityオブジェクトなどの特殊な型も適切に文字列化しています。

応用例

特定の型だけをエクスポート

特定の型のScriptableObjectだけをエクスポートしたい場合は、検索条件を変更します:

Propertyも出力対象にする

publicプロパティも出力したい場合は、以下のように変更します:

カスタムフォーマット

出力フォーマットをカスタマイズしたい場合は、ConvertValueToStringメソッドを編集します。

まとめ

この記事では、UnityのScriptableObjectをCSV形式で一括エクスポートするエディタ拡張を作成しました。

主な機能:

  • フォルダ内のScriptableObjectを自動検索
  • 型ごとにグループ化して出力
  • 個別ファイルとしても出力可能
  • 配列やリストなどの複雑なデータにも対応

この拡張機能を使えば、企画者との連携やデータのバックアップ、外部ツールでの編集など、様々な場面で活用できます。

ぜひプロジェクトに導入して、開発効率を向上させてください!


参考リンク:

【ゲームの作り方講座もプレゼント中!】

現場レベルのゲーム制作が、すべてここで学べます。

【永久会員チケット】

永久会員チケット|Unity入門の森

全講座を見放題で学ぶ

ソースコード・素材・プロジェクトすべて公開。
Unityの基礎から応用まで、一生使えるスキルを体系的に習得。

コメント

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