いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

Unityで作ったゲームはバックグラウンドに回ったとき動いていないのか?

 念のために確認しました。ゲームをやっていてふと天気予報が気になって確認したとします。アンドロイドなら画面の一番下のホームキーや動いているアプリを一覧できるキー(名前は知りません)を押して天気予報のアプリを実行、ということになるでしょう。まさかその最中、ゲームは止まっていますよね? 気になっていました。

 単純に「バックグラウンドのアプリになったんだから止まるに決まっている!」なんて言えません。バックグラウンドのアプリでも仕事をしているものはいくらでもあるからです。一応、ゲームのUpdate()ルーチンが呼ばれているかどうか確認しました。

void Update()
{
    dispMsg(ct);
    ct++;
   ……
}

のように、Update()ルーチンの先頭にメッセージ表示のコードを入れます。
dispMsg()は自作の関数で、ゲーム画面の特定の位置に引数を表示する、という働きを持ちます。こんな風に表示されます。
f:id:Inuosann:20210527184834p:plain:w200

さて、結果は……??

 ゲームがバックグラウンドでガンガン動き続けてバッテリーが無意味に減る……ということはなさそうです。ct = 1000でバックグラウンドに回ると、次回ゲームを表に出したときにはct = 1000から始まります。ホームキーを使ってホーム画面から他のアプリケーションを動かしても、起動中のアプリの一覧からゲーム以外の何かを選んで実行しても、そのあとゲームを実行してみると同じctの値から始まります(実際には立ち上がりのコンマ何秒かでctは進んでしまいますが)。

 「オマエはそんなことすら知らなかったのか!」などと叱られそうですが、よいのです。実験によって自分で掴んだ事実です。これこそ本当の知識というもの。誰かに聞いて簡単に知った事実より価値があります!!!
 ようやくゲーム開発もゴールが見えてきたので、今までは気にならなかったことがいろいろ見えてきました。全部手当てして、早めに公開したいです。