私は最初のfpsゲームをやっているので、スタートメニューから最初のシーンに移動しています。私のポーズゲームスクリプトで、その新しいシーンが起動すると、pauseMenu.SetActive(false)が設定されます(キャンバスであり、ポーズゲームスクリプトはゲームマネージャオブジェクトに接続されていません)。 boolはisPausedを(awake関数の前に)falseにします。Unity 5新しいシーンをロードした後でNullReferenceExceptionが発生する
今、気分は素晴らしいです、私はそれを作ったと思っています、何も墜落しない、それはとても簡単です!しかし...(ゲームを一時停止するために)エスケープを押すと、もう一時停止メニューが見つからないため、NullReferenceExceptionが発生します。シーンを切り替える作業を始める前に、そのビットはうまく動作していたので、私の質問は、スクリプトの実行を中断するシーンを切り替えるときに何か知っていますか?私の撮影は動作しませんが、SwitchWeapon/Movement/MouseLook/ItemPickUpスクリプトが機能します。 スタートメニューのシーンと実際のレベルのシーンを切り替えるときにブラックホールがありますか? HELP :)
ここではPauseGameスクリプト
GameObject pauseMenu;
bool isPaused = false;
void Awake()
{
if (Application.loadedLevelName != "Start_Menu")
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
pauseMenu = GameObject.Find("Canvas_Pause_Menu");
pauseMenu.SetActive(false);
Debug.Log(isPaused + " " + pauseMenu);
}
}
void Update()
{
// Here I use Application.loadedLevelName because I haven't found
// a SceneManager function in the Unity docs to check here)
if (Application.loadedLevelName != "Start_Menu")
{
if (Input.GetKeyDown(KeyCode.Escape))
{
if (!isPaused)
{
pauseMenu.SetActive(true);
Time.timeScale = 0f;
Cursor.visible = true;
isPaused = !isPaused;
}
else if (isPaused)
{
pauseMenu.SetActive(false);
Time.timeScale = 1f;
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
isPaused = !isPaused;
}
}
}
}
@Manu嬉しいですね。ハッピーコーディング! – Programmer
どちらのメソッドも機能しませんでしたが、その理由はシーン間で持続するGameManagerオブジェクトにスクリプトがあるからです。だから私はキャラクターオブジェクトの代わりにキャラクターオブジェクトを移動し、あなたの最初のotption 'public GameObject pauseMenu;'を使いました。それも:)私のスタートやアウェイク機能の前に私の弾薬のように宣言したものは、それも同様に動作します:)私はちょっとそれが今働く方法をちょっと理解しています、ありがとう、もう一度! – Manu
@Manu Nice。あなたは生きて学びます。ゲームメニューを作成したり、一時停止したり、再開したりするのに問題がある場合は、ここでその方法を確認してください。 http://stackoverflow.com/a/37263453/3785314 – Programmer