所以我正在做我的第一個fps遊戲,現在我正要從開始菜單轉到我的第一個場景。當這個新的場景在喚醒時,在我的暫停遊戲腳本中加載時,我設置了pauseMenu.SetActive(false)(這是一個畫布,暫停遊戲腳本不附加到它,而是附加到遊戲管理器對象),並且設置了一個布爾說,是假的(在清醒功能之前)。加載新場景後的Unity 5 NullReferenceException
現在感覺很棒,我在想我已經做到了,沒有碰撞過,很簡單!但是......當我按Escape(暫停遊戲)時,我得到一個NullReferenceException,導致它無法再找到暫停菜單!在我開始研究切換場景之前,這一切並沒有發生,所以我的問題是,在切換腳本執行的場景之間切換時是否需要知道?我的拍攝功能無法使用,但我的SwitchWeapon/Movement/MouseLook/ItemPickUp腳本可以正常工作。 在開始菜單場景切換到實際級別場景時是否存在黑洞?幫助:)
這是我在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對象上持續存在於場景之間。所以我只是將腳本移動到了我的Character對象上,並且使用了第一個選項'public GameObject pauseMenu;'並且工作:)同樣,我在我的Start或Awake函數之前聲明的所有東西都像我的彈藥一樣,我將它們移動到了這些函數中它的工作原理以及:)我有點了解它現在的工作原理,再次感謝! – Manu
@Manu很好。你生活和學習。如果您在創建遊戲菜單時遇到問題,請暫停和恢復內容,請在此處查看如何操作。 http://stackoverflow.com/a/37263453/3785314 – Programmer