1024chon
@1024chon

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Unityでポーズ移行時にポーズ画面を表示させたい[iOS]

解決したいこと

UnityでOnApplicationPauseが呼ばれるタイミングでUIを表示させたいです。
例えば、iOSでタスク一覧を表示させるときに、ポーズ中のような画面が表示されればOKです。
エディタの方では確認ができるのですが、iOSにビルドした際にうまく表示されません。

テスト環境

  • Unity2020.3.9f1
  • xcode12.5
  • iPhone12 Pro
  • iOS14.6

該当するソースコード

一部抜粋
public GameObject ui;

private void OnApplicationPause(bool paused)
{
    Debug.Log("paused: " + paused); // ここはうまくいく
    ui.SetActive(paused);  // ここはうまくいかない
}

自分で試したこと

SetActiveではなくenabledに変更したり、activeにするタイミングをUpdateに変えたりしましたが、同じように表示されませんでした。
一方で、Debug.Log()についてはちゃんと表示されているため、OnApplicationPauseが呼ばれていないわけではないと思われます。
また、OnApplicationPause()がtrueで呼ばれたときだけSetActiveした場合にはポーズ中には何も起きないですが、画面に復帰したときにはちゃんとUIが表示されました。
これらの関係から、推測ですが、Updateなどゲームループのタイミングと描画のタイミングがずれているためこのような問題が起きているのではないかと思われます。もしくは、描画するタイミングの前にアプリ側で描画を停止している可能性もあります。
iOSのライフサイクルで言うとapplicationWillResignActiveのタイミングでOnApplicationPauseが呼ばれます。またUnityの仕様からOnAppicationPauseを呼んだ後に一度だけUpdateが呼ばれることを確認しています。
iOSのPlayer Settingsの方でRender Extra Frame on Pauseをtrueにしたりfalseにしたりしましたが、どちらも結果が変わらずでした。
代わりにOnApplicationFocus()を試してみましたが、挙動は変わりませんでした。
androidやPCビルドでどうなるかはまだ確認をしていません。

もし今までUnityでこのようなポーズ画面を作成したことがある方がいれば、この解決方法もしくはよりよいポーズ画面の実装についてご教授願いたいです。

0

No Answers yet.

Your answer might help someone💌