WebGL ゲームで一人称カメラの回転の一部としてマウス ロックを使用しています。
ゲームに集中できるようにしたいのですが、フォーカスが失われたりエスケープ キーが押されたりしたときに、一時停止画面に「ここをクリックして続行」というテキストを表示したいと考えています。
これが私の一時停止クラスです
using UnityEngine;
using System.Collections;
public class Pause : MonoBehaviour {
public RotateCamera rotateCamera;
public GameObject pauseMenu;
public bool paused;
public void Start()
{
PauseGame();
}
void OnApplicationFocus(bool hasFocus)
{
if (hasFocus == true)
{
UnPause();
}
if (hasFocus == false)
{
PauseGame();
}
}
void Update () {
if (Input.GetKeyDown(KeyCode.Escape))
{
PauseGame();
}
if (paused)
{
if (Input.GetMouseButtonDown(0))
{
UnPause();
}
}
}
public void PauseGame()
{
rotateCamera.LockCursor(false);
paused = true;
pauseMenu.SetActive(true);
}
public void UnPause()
{
rotateCamera.LockCursor(true);
paused = false;
pauseMenu.SetActive(false);
}
}
問題は
ユーザーがタブなどのフォーカスを別のものに切り替えても、ゲームは一時停止しません。
ユーザーがエスケープを押しても、ゲームは一時停止メニューを表示しません。エスケープキーの押下が登録されていないかのようです。ブラウザーでカーソルを再び見ることができます (これにより、一人称視点の制御が混乱します)。
これがさらに役立つ場合は、これが、rotateCamera スクリプトでマウス ロックを処理する方法です。
public void LockCursor(bool _lock)
{
lockCursor = _lock;
Screen.lockCursor = lockCursor;
}