読者です 読者をやめる 読者になる 読者になる

ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【Unity】備忘録#3 スクリプトからのファイルアクセスについて

スクリプトからのファイルアクセスについてです。

■パスについて

Unityでは一時ファイルやAssets内のファイルなど様々なパスを扱うことができます。
以下のブログ様に一覧としてまとめられています。

unityでplatformによって取得できるパス - Qiita

絶対パスで参照することもできますが、現実的には相対パスを利用することになると思うのでそれについて説明します。

よく使うことになるのはApplication.dataPathです。(多分)

このApplication.dataPathは先のパス一覧にあるように、MacOSWindowsでビルドした時やUnity開発時で微妙に変わっていたりします。

そこで自分がよく使っているパスを取得する関数が以下になります。

public string getPath() {
	string result = Application.dataPath;
	if (Application.platform == RuntimePlatform.OSXPlayer) {
		// MacOSでビルドした場合のパス(.appファイルの同階層のパス)
		result = result + "/../../";
	} else if (Application.platform == RuntimePlatform.WindowsPlayer) {
		// Windowsでビルドした場合のパス(.exeファイルの同階層のパス)
		result = result + "/../";
	} else {
		// それ以外の場合(Assets/Resourcesフォルダのパス)
		result = result + "/Resources/";
	}
	return result;
}

例として以下のようなフォルダ構成の場合、

hogeフォルダ
 |--image.png
 |--ビルドした.exeまたは.app

image.pngファイルへは getPath() + "image.png" でアクセスできます。