ウィンドウが非アクティブでもゲームを動かす

ページ作成日 :

検証環境

Windows
  • Windows 11
Unity エディター
  • 2021.3.3f1
入力システムパッケージ
  • 1.3.0

この Tips の前提設定

この Tips の説明の前提として以下の設定を事前に行っています。

ウィンドウが非アクティブでもゲームを動かす方法

この方法についてはプログラムなどで設定する必要はなくプロジェクトの設定で有効無効を切り替えられます。

Unity エディターのメニューから「編集」を選び「プロジェクト設定」を選択します。

左のメニューで「プレイヤー」が選択されていることを確認し、ページの下の方に「バックグラウンドで実行」があるのでこのチェックの有無で切り替えることが可能です。

動きを確認する

画面に現在時刻を表示させ、ウィンドウを非アクティブにしたときに設定によって時間が進むか止まるかを確認してみます。

UI を作成します。動くかどうか確認できればいいので適当に作ってください。

スクリプトを作成します。ここでは UpdateText という名前にしておきます。

using System;
using UnityEngine;
using UnityEngine.UI;

public class UpdateText : MonoBehaviour
{
  private Text Text;

  // Start is called before the first frame update
  void Start()
  {
    Text = GetComponent<Text>();
  }

  // Update is called once per frame
  void Update()
  {
    Text.text = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
  }
}

日付を更新するテキストにアタッチします。

ゲームを実行して日時が正常に更新されていくか確認します。

この状態で他のウィンドウをアクティブにすると日付の更新が止まることを確認します。

ゲームを停止しメニューの編集から「プロジェクト設定」を選択します。

「プレイヤー」のページの下の方にある「バックグラウンドで実行」にチェックをいれダイアログを閉じます。

ゲームを実行し他のウィンドウがアクティブになっている状態でも日時が更新されるか確認してください。