タイトルの通り、IDEでデバッグしている間や、Build and Runしている間は正常に動作していたのに、ビルドしてexeファイルを実行するとファイルが読み込めなくなった。
このBuild and Runだと動作するというのが何気に罠な気がする・・・。
どんなアプリケーションでも、ビルド後のバグ取りは面倒なもので、「やっぱりデバッグ用の表示要るよなぁ」とDebugUIなるCanvasを作成して、コツコツ出力を確認する。
(Unity初心者なので、ビルド後のデバッグの良い方法があるのかもしれないが・・・)
で、StreamReaderで設定ファイルなどを読み込んでいたところでこけていることが判明。
ビルド後のファイルを眺めてみると、確かに該当ファイルは見当たらない(パッケージされている?)。
対応を調べてみると以下の2つでクリアできそう。
1.StreamingAssetsを利用して、ファイルをパッケージ化せずに書き出す
2.Resoucesに配置してResouce.Loadで読み取る
1の方法だと、設定ファイルなどをそのまま配置してしまうようなので、2で対応。
try { var textAsset = Resources.Load("Config") as TextAsset; var config = JsonConvert.DeserializeObject<Dictionary<string, string>>(configText.textAsset); }
こんな感じでLoadして、JSON形式のファイルをデシリアライズしてDictionaryとして受け取る。
ファイルが無い場合は例外じゃなくてnullチェックかもしれないなぁと思いつつも、検証する前にブログにメモを残す・・・。
Please give us your valuable comment