Unityでビルド時に一部フォルダを除外

メモ

 

ビルドが開始される前(エディタ上でシーン再生も含まれる)
OnPreprocessBuild

ビルド中にシーンのコールバックを受け取る
OnProcessScene

 if(EditorApplication.isPlaying==false) でビルド時のみ

コールバックの順序を制御
callbackOrder

ビルドの完了後
OnPostprocessBuild

 

 

StreamingAssetsに置いているフォルダなどで
エディタ上では使用するけどビルドしたファイルには含めたくない場合

/// <summary>
/// ビルド時のみフォルダを一旦移動する
/// </summary>
private static void MoveFolderTemporarily()
{
    if (EditorApplication.isPlaying == false)
    {
        Debug.Log("ビルド時のみTestsフォルダを一旦移動する");
        var filePath = Application.streamingAssetsPath + "/除外したフォルダ";
        var nextPath = "StreamingAssetsTemp";
        FileUtil.MoveFileOrDirectory(filePath, nextPath);
    }
}


/// <summary>
/// ビルド時のみ一時移動していたフォルダを元の位置に戻す(ビルド完了時に呼ぶ)
/// </summary>
private static void ReturnTemporaryMoveFolder()
{
    if (EditorApplication.isPlaying == false)
    {
        Debug.Log("ビルド時のみ一時移動していたフォルダを元の位置に戻す");
        var filePath = Application.streamingAssetsPath + "/除外したフォルダ";
        var nextPath = "StreamingAssetsTemp";
        FileUtil.MoveFileOrDirectory(nextPath, filePath);
    }
}

 

OnPreprocessBuildでMoveFolderTemporarilyを呼ぶと
プロジェクトルートにフォルダがリネームされて移動する

OnPostprocessBuildでReturnTemporaryMoveFolderを呼ぶと
移動していたフォルダを戻す(名前も)

 

 

参考

https://docs.unity3d.com/ja/2018.4/ScriptReference/FileUtil.MoveFileOrDirectory.html

 

 

関連記事




コメントを残す

※コメントは承認後に表示されます。
 コメントを公開されたくない場合、名前の後に「:非公開」とつけてください。