初めに
開発していて独自のファイルをセーブしたり、ロードしたりする様な事があると思います。
僕の場合は、josnファイルで独自のデータをセーブして使ったりしてました。
その際にファイルのパスを調べてたり、ファイル名を調べたりする方法調べたものをまとめました。
シーンデータのパスを知りたい
for( int i = 0; i < UnityEngine.SceneManagement.SceneManager.sceneCount; ++i )
{
var path = SceneManager.GetSceneAt( i ).path;
var fileNamepath = System.IO.Path.GetDirectoryName(path);
}
上記でやっているのは読み込まれているシーンのパスを取得してパスのみ取得してます。
Assets\Scenes\hoge.unity
を取得してから
Assets\Scenes\のパスのみ取得する感じです。
AssetDatabase.GetAssetPath使ってパス取得
unityの機能で取得
自分の環境ではinspectorにTextAssetを指定できる場所を作って、そのファイルのパスを取得するのに使いました。
var tex = EditorGUILayout.ObjectField("hoge", null, typeof(TextAsset), true) as TextAsset;
var path = AssetDatabase.GetAssetPath(tex);
hogeにinstanceIDやassetObjectを入れて取得する方法
フルパスで帰ってきます。
いつも通り、先人の方がきれいにまとめてくれている
CreateInstanceで呼んであげると複数起動できるみたい
ついでにsaveの機能も。。きれいにまとまっている
最後に
ファイルパスを取得して最後のファイル名を追加して保存しようと思いよくやるのは
ファイルパス
Assets\Scenes
ファイル名
hoge.unity
上の二つをくっつけてやると
Assets\Sceneshoge.unity と自分が意図した位置にデータを保存すのに失敗します。
ちゃんとファイルパスの最後に"/"が入っていなかったら入れて使ってあげましょ。