0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

UnityでExcelのデータを取得する

Last updated at Posted at 2022-04-14

2022.4.14 今回はUnityでExcelのデータを取得していきます。

 目的

ゲーム会社でプロジェクトを見ながらスクリプトを見ていると、データをExcelで管理していることが多く、どうやっているのか疑問に思ったからです。

 参考資料

今回参考にしたのは、以下のリンクの記事です。
https://squmarigames.com/2018/12/12/unity-excel-importer-maker/

 実践

1.Excel Importer をダウンロードする

以下のリンクをクリックして、GitHubに移動します。
https://github.com/tsubaki/Unity-Excel-Importer-Maker

CodeボタンからDownload ZIPを選択し、ダウンロードしたzipを解凍します。
bandicam 2022-04-14 14-44-20-521.jpg

解凍してできたファイルの中のAsset内にある「Terasurware」フォルダをUnityのプロジェクト内にドラック&ドロップします。
bandicam 2022-04-14 14-53-47-728.jpg

2.Excelデータを作成する

インポートするExcelを作成していきます。
作成する際は、
・拡張子を「.xls」とする
・複数のシートはフォーマットをそろえる

今回は以下のようなExcelを作成しました↓
bandicam 2022-04-14 15-48-20-230.jpg

作成したExcelデータはAssetsフォルダ内に入れます。

入れたExcelデータを右クリックして、
「XLS Import Settings...」という項目を選択します。
bandicam 2022-04-14 15-53-12-842.jpg

以下のような画面が出てきます
bandicam 2022-04-14 15-55-24-049.jpg

・class name
Excelをインポートする用のクラスを作成するためのクラス名です。変更しても、そのままでも問題ないそうです。
・Sepalate sheets
Excel内に複数のシートがある場合、シートごとに読み込むかどうかの設定です。
シート内の1行目のアルファベットは全シートで統一する必要があります。
・Parameter settings
Excelシートの変数名は入力されているので、それに対応した型名を右のタブから設定します。

設定が終わったら「Create」ボタンを押します。
すると、Terasurware/Classes内に「Entry_Sheet1.cs」、
Terasurware/Classes/Editor内に「"作成したExcelの名前"_importer.cs」ができています。
※今回は「Unity_Study.xls」という名称で作成しました。
bandicam 2022-04-14 16-07-06-358.jpg
bandicam 2022-04-14 16-07-43-450.jpg

3.スクリプトの更新、作成

Terasurware/Classes/Editor内に作成したスクリプト内の以下の部分をExcelが入っている場所とassetが入っている場所に変更します。

Unity_Study_importer.cs
public class Unity_Study_importer : AssetPostprocessor {
  private static readonly string filePath = "Assets/Unity_Study.xls";
  private static readonly string exportPath = "Assets/Resources/Unity_Study.asset";

今回はコンソールにExcelから読み取ったデータを表示したいので、そのコードを書いていきます。

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

public class ImportExcelData : MonoBehaviour
{
    Entity_Sheet1 es;

    // Start is called before the first frame update
    void Start()
    {
        es = Resources.Load("Unity_Study") as Entity_Sheet1;

        Debug.Log("numberの1行目:" + es.sheets[0].list[0].number);
        Debug.Log("namerの1行目:" + es.sheets[0].list[0].name);
        Debug.Log("numberの2行目:" + es.sheets[0].list[1].number);
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

以下のコードを追加します。

using System;
using System.IO;

ResourcesフォルダからUnity_Study.assetファイルを読み込みます。

es = Resources.Load("Unity_Study") as Entity_Sheet1;

Sheets[n] でn枚目のシートを指定
list[n]でn行目のデータを選択
numberでnumberの列のデータを取得します。

実行してコンソールに以下のように表示されていたら終了です。
bandicam 2022-04-14 17-14-08-169.jpg

今回はやり方を学べたので、次は応用していきたいです。

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?