Unity 5.6のBuildPlayerで「Building to the Assets folder is not allowed.」が発生する場合の対応

Unity 5.6のBuildPlayerで「Building to the Assets folder is not allowed.」が発生する場合の対応

CSS

 Unity 5.6で、BuildPlayerに渡すパスのチェックが変わったみたいです。

スポンサーリンク
GoogleAdSence レクタングル(大)

BuildPipeline.BuildPlayerで「Building to the Assets folder is not allowed.」が発生する

 エディタツールにおいてビルドを実行するBuildPipeline.BuildPlayerメソッドを使用していましたら、Unity 5.6で「Building to the Assets folder is not allowed.」エラーが発生するようになってしまいました。

 Unity 5.5では動いていたコードですから、おかしいと思いつつもいろいろ試していくと、どうやらApplication.dataPathがパスに含まれているからいけないようでした。

Application.dataPathの文字列を含めないようにする

 BuildPlayerでは第2引数にビルド結果の出力先を指定します。そこに指定するパスにApplication.dataPathの示す文字列が含まれていたため、先のエラーとなっていました。

 Application.dataPathには「(プロジェクトディレクトリ)/Assets」が格納されており、警告のメッセージと一致します。

 しかし、ビルド結果を本当にAssetsディレクトリの下へ出力しようとしていたわけではありません。「Application.dataPath+”/../tmp”」のように、Assetsディレクトリの一つ上の階層(プロジェクトディレクトリの位置)を取得するために使用していました。

 けれど結果的にAssetsディレクトリとは関係ないパスになったとしても、文字列として入っていたらアウトのようです。

絶対パスに変換した

 ですので私のケースでは、Path.GetFullPathメソッドを使用して、第2引数に指定するパスを絶対パスに変換してから渡してやることにしました。

 指定したパスの文字列は最終的にAssetsディレクトリの外を示していますから、絶対パスにすればAssetsディレクトリのパスは消えます。これでBuildPlayerのエラーは消えました。

参考:Application.dataPathPath.GetFullPath