fc2ブログ
ヽ|∵|ゝ(Fantom) の 開発blog? ホーム » Unity »【Unity】Unity2020 でプラットフォーム切り替えをすると、Run In Background が勝手にオフになってしまう

【Unity】Unity2020 でプラットフォーム切り替えをすると、Run In Background が勝手にオフになってしまう  


 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.」が出る


関連記事
スポンサーサイト



category: Unity

thread: ゲーム開発

janre: コンピュータ

tag: Unityトラブルシューティング  Unityバグ 
tb: 0   cm: --


トラックバック

トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/405-1e084fb3
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

Social

検索フォーム

全記事一覧

カテゴリ

ユーザータグ

最新記事

リンク

PR

PR

▲ Pagetop