今回は、Excelで出力したファイルをUnityで読み込む方法です
Unityで読み込めるのは文字コードが「UTF-8」のファイル!
エクセルから、通常の方法でテキストファイルを出力すると、
文字コードは「UTF-8」にはなりません
したがって、Unityで読み込めないファイルとなってしまいます
ExcelからCSVファイル出力
- 事前準備
ExcelのVisualBasicからエディターを開く
「ツール」→「参照設定」をクリック
下記の画像を参考に「Microsoft ActiveX Data Objects 6.1 Library」にチェック
'******************************************************************* 'モジュール名 :OutFileData '概要 :テキストファイル出力 '引数 :st_filename As String ファイル名 '引数 :st_DefPath As String パス '引数 :st_Kaku As String 拡張子 '引数 :st_outdata As String 出力データ '戻り値 :なし '******************************************************************* Public Sub OutFileData(st_filename As String, st_DefPath As String, st_Kaku As String, st_outdata As String) '================================================================== ' データ定義 '================================================================== Dim st_PJName As String Dim st_filepass As String Dim st_foldaname As String Dim i_cnt_file As Integer Dim i_cnt_teigi As Integer Dim i_cnt_youso As Integer '================================================================== ' 保存先フォルダ設定 '================================================================== If st_DefPath = "" Then st_filepass = ThisWorkbook.Path & "\" Else st_filepass = st_DefPath & "\" End If '================================================================== ' ファイル存在判定 ※既に存在してたら削除 '================================================================== st_filename = st_filepass & st_filename & "." & st_Kaku If Dir(st_filename) <> "" Then Kill st_filename Else End If '================================================================== ' ファイル出力 '================================================================== ' 変数定義 Dim obj_OutFile As New ADODB.Stream Dim maxRow As Integer ' ファイル出力 With obj_OutFile ' 書き込みモード設定 .Type = adTypeText .Charset = "UTF-8" .LineSeparator = adCRLF .Open ' データ記入 .WriteText st_outdata, adWriteChar ' 閉じる .SaveToFile st_filename, adSaveCreateNotExist .Close End With Set obj_OutFile = Nothing End Sub
- 呼び方例
Call OutFileData("ファイル名" , "C:\ファイルいれるフォルダ名", ".csv" , "ファイルの中身" )
上記の呼び方で、作成したデータを
文字コードを「UTF-8」のファイルとして出力することができます。
UnityでCSVファイル読み込み
- Unityにファイルを設定
下図のように、「Resources」フォルダにExcelで出力したファイルを設定する
- 取得コード
/************************************************************************* クラス名 : ReadTempFile 概要 : 中間ファイル読み込み *************************************************************************/ public void ReadTempFile() { //==================================================================== // 変数定義 //==================================================================== string str_Path = "QuizList"; // 設定したファイル名 string str_SetOne = ""; TextAsset fl_Read = new TextAsset(); //==================================================================== // ファイル読み込み //==================================================================== // csvファイルを取得 fl_Read = Resources.Load(str_Path, typeof(TextAsset)) as TextAsset; StringReader reader = new StringReader(fl_Read.text); // 1行ごとに処理 while (reader.Peek() > -1) { // 1行データを変数に格納 str_SetOne = reader.ReadLine(); //==================================================================== // ※以下で、機種固有の処理を行って1行データを取得 //==================================================================== } }
以上です。
Excelで中間ファイルを作成して、Unityで読み込むまでができる様になります。
今回僕はマッチ棒で計算式を作るアプリを作ったのですが、
計算式の数字をエクセルで管理することで、
出題する問題の管理がとても楽にできました。
Unityでゲームを作る方には必須の知識だと思います!