コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】AssetPostprocessor の OnPreprocessAudio や OnPreprocessTexture では Application.isBatchMode が true になる

概要

Unity Hub から Unity を起動した状態で

[MenuItem( "hoge/hoge" )]
private static void Hoge()
{
    Debug.Log( Application.isBatchMode ); // False
}

Application.isBatchMode にアクセスすると通常は False になるが

private void OnPreprocessAudio()
{
    Debug.Log( Application.isBatchMode ); // True
}
private void OnPreprocessTexture()
{
    Debug.Log( Application.isBatchMode ); // True
}

AssetPostprocessor の OnPreprocessAudio や OnPreprocessTexture だと
Application.isBatchMode が True になる現象に遭遇した

private static void OnPostprocessAllAssets
(
    string[] importedAssets,
    string[] deletedAssets,
    string[] movedAssets,
    string[] movedFromAssetPaths
)
{
    Debug.Log( Application.isBatchMode ); // False
}

OnPostprocessAllAssets だと正常に False を取得できた

リファレンスを見てもこのような挙動になる旨は記載されていなかった

検証環境

  • macOS Monterey バージョン 12.5.1
  • Unity 2022.1.11f1