【Unity】ビルド後の外部ファイルの入出力 – Windows編 –


Unityで.exeにビルドした後の入出力サンプル


必要な機会に恵まれたのでメモ代わりに。

■要点

Application.dataPath でビルド時に生成されるDataフォルダのパスが取れる。
System.IO あたりのAPIでファイルの入出力を行う。
※ 詳しい解説は下部へ

■環境

Unity2018.3.11を使用しています。

■コード

using UnityEngine;
using System;
using System.IO;
using System.Text;

public class IO_Test : MonoBehaviour {

	private string path;
	private string writeTxt = "hello";
	private string fileName = "output.txt";
	
	void Start() {
		path = Application.dataPath + "/" + fileName;
		Debug.Log(path);
		ReadFile();
		
		WriteFile(writeTxt);
	}

	void WriteFile(string txt) {
		FileInfo fi = new FileInfo(path);
		using (StreamWriter sw = fi.AppendText()) {
			sw.WriteLine(txt);
		}
	}

	void ReadFile() {
		FileInfo fi = new FileInfo(path);
		try {
			using (StreamReader sr = new StreamReader(fi.OpenRead(), Encoding.UTF8)) {
				string readTxt = sr.ReadToEnd();
				Debug.Log(readTxt);
			}
		} catch (Exception e) {
			Debug.Log(e);
		}
	}

}

■解説

Windows向けにビルドするとexeが生成されたフォルダの中に「プロジェクト名_Data」フォルダが生成される。「プロジェクト名_Data」フォルダのパスは、C#プログラム内で Application.dataPath と記述することで取得できる。(※これはビルドしたexeからゲームを実行した時の話。Editor上で実行した際は代わりにAssetsフォルダのパスが取得される。)
あとはそのパスと、C#が使えるIO(インプット、アウトプット)のライブラリを使ってファイルの入出力を行う。
この仕掛けを利用すれば、例えばビルドした後でもゲーム内で使用するデータを差し替えたり出来る。

  • このエントリーをはてなブックマークに追加

PAGE TOP