3

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;
}
4

0 に答える 0