【Unity】Unity2020 でプラットフォーム切り替えをすると、Run In Background が勝手にオフになってしまう 
2021/09/28 Tue [edit]
Unity のアップグレードで問題が出るのはいつものこと。Unity2020 からは ~.3.x がLTSとなり、2桁マイナーバージョンだから、もうそろそろバグFixされてるかと思ったけど、変なバグあるね。
VRM Live Viewer は Windows(x64) と Android の2つのプラットフォームを出しているので、とりあえずテストでビルドしてたら、プラットフォーム切り替えるたびに「Run In Background」(バックグランドでもアプリが動作するオプション) が、なぜか勝手にオフになってることに気がついた。
VRM Live Viewer は Windows ではファイルのドラッグ&ドロップに対応してるからね。Run In Background で動作しないと、エクスプローラにフォーカスが当たるたびにアプリが止まってしまう(ドロップ認識できなくなる)。
とりあえず、バグレポとして Unity公式に送っておいたけど、仕様変更だったらちょっと困るね。
→ Unity公式から返信来ました。いずれ修正されるようです。
なので、プラットフォーム切り替え・ビルド開始のコールバックに、常に Run In Background をオンにするスクリプトを入れてみたら、一応上手く行った。
まぁ、そのうち修正されるかもだが、毎回設定し直すのは面倒なので、一時しのぎではあるが、そのスクリプトを掲載しておこう。
(※) Unity 2020.3.19f1 / Windows10(x64) で確認
●プラットフォーム切り替え・ビルド開始時に Run In Background を強制的にオンにするスクリプト
using UnityEngine;
using UnityEditor;
using UnityEditor.Build;
//※Editor フォルダに配置
public class EditorPlatformSetting : IActiveBuildTargetChanged, IPreprocessBuild //※クラス名は任意
{
public int callbackOrder => 0;
//ビルドターゲットを変更したときのコールバックハンドラ
public void OnActiveBuildTargetChanged(BuildTarget previousTarget, BuildTarget newTarget)
{
Debug.Log("BuildTarget is " + newTarget);
ForceRunInBackgroudIsTrueIfNeeded(newTarget);
}
//ビルド開始するときのコールバックハンドラ
public void OnPreprocessBuild(BuildTarget target, string path)
{
ForceRunInBackgroudIsTrueIfNeeded(target);
}
//プラットフォームにより、強制的に RunInBackgroud をオンにする
void ForceRunInBackgroudIsTrueIfNeeded(BuildTarget target)
{
switch (target)
{
case BuildTarget.StandaloneWindows:
case BuildTarget.StandaloneWindows64:
//※必要なら、プラットフォームをここに追加する
Debug.Log("Force RunInBackgroud to True");
Application.runInBackground = true;
break;
case BuildTarget.Android:
//※Android では無視される
break;
}
}
}
(参考) 【Unity】エディタ拡張で使用できるコールバックを40個まとめて紹介
・ビルドターゲットが変更された時
・ビルド前とビルド後
(関連記事)
【Unity】Unity2020 にアップグレードしたら package cache (PackageManager) のエラーが色々出る…
【Unity】Unity2019以降で新規作成したアセットは、Unity2018以前にインポートすると壊れる?
【Unity】EventTrigger のコールバック引数変わった?
【Unity】【Android】Unity2019 へのアップグレードの問題点 メモ
【Unity】【Android】2019.2.0 でパッケージ名(Bundle Identifer)でアンダーバーが使えない
【Unity】Unity2018.3.2 にアップグレードすると見た目がおかしくなることがある
【Unity】Unity2018 でビルドエラー「CommandInvokationFailure: Gradle build failed.」が出る
- 関連記事
トラックバック
トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/405-1e084fb3
この記事にトラックバックする(FC2ブログユーザー)
| h o m e |