LoginSignup
17
15

More than 5 years have passed since last update.

Unityから外部ファイルを扱おうとして詰まった話

Last updated at Posted at 2018-03-01

はじめに

やらかしたので備忘録です。
Unityで実行した際には呼び出せたbatファイルが
ビルドしたプログラムでは呼び出せなかった話です。

[2018/3/2/10:00]
OSとUnityのバージョンを記載しました。
原因のパス指定の間違いについての言及を詳細にしました。

開発および実行環境

  • Unity 5.6.3f1
  • Visual Studio C# 2017
  • Windows 10 Home

原因

UnityでPlayボタンを押して実行したものとビルドしたものでbatファイルへのパス指定が変わっていた。
そもそもビルドしたプログラムではbatファイルは存在してなかった(?)

batファイルはAssets/ProcessScriptsディレクトリの中に置いてありました。
プログラム上でパス指定にはApplication.dataPathを使用し,
Application.dataPath+"/ProcessScripts/hoge.bat"
のようにしていました。

この場合,
UnityでPlayボタンを押して実行した場合, このパスは以下のようになっています。
C:/~/hogeProject/Assets/ProcessScripts/hoge.bat

しかし, ビルドしたプログラムで実行した場合は以下のようになっていました。
C:/~/hogeProject/hogeProject_Data/ProcessScripts/hoge.bat

なんか変わっている...

解決

調べていくとAssetsディレクトリ内のStreamingAssetsというディレクトリの
中のものだけビルド時にhogeProject_Dataというディレクトリへ移動されて
ビルド後にも使えるそうです。

ということでAssetsディレクトリ内にStreamingAssetsディレクトリを作成し,
batファイルが入ったProcessScriptsディレクトリごと移動させました。

移動後のパス指定では
Application.dataPath+"/StreamingAssets/ProcessScripts/hoge.bat"
のようにしました。

これでビルド後もきちんと呼び出されるようになりました。

まとめ

プログラムから直接指定するファイルはStreamingAssetsの中に
入れておく必要があるということですね。

参考

ストリーミングアセット
ビルドしたプログラムでLogを見る方法

17
15
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
15