所以我正在做我的第一个fps游戏,现在我要从开始菜单到我的第一个场景。当这个新场景加载到清醒状态时,在我的暂停游戏脚本中,我设置了pauseMenu.SetActive( false ) (它是一个画布,暂停游戏脚本不是附加到它,而是附加到一个游戏管理器对象上),并且我设置了一个bool,它说isPaused为false(在唤醒函数之前)。
现在的感觉很好,我想我已经做到了,没有什么崩溃,它是如此容易!但是..。当我按下逃逸(暂停游戏),我得到一个NullReferenceException,因为它找不到暂停菜单了!在我开始切换场景之前,这个位操作非常好,所以,我的问题是,在中断脚本执行的场景之间切换时,有什么需要知道的吗?我的拍摄也不起作用,但我的SwitchWeapon/ My /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;
}
}
}
}发布于 2016-06-11 13:11:02
由于某种原因,pauseMenu在出现新场景后变得无效。
你有两个选择:
使pauseMenu公开,并在编辑器中将“暂停”菜单Canvas拖到编辑器中,然后从“清醒”函数中删除pauseMenu = GameObject.Find("Canvas_Pause_Menu");。您必须删除pauseMenu = GameObject.Find("Canvas_Pause_Menu");。
public GameObject pauseMenu;
bool isPaused = false;
void Awake()
{
if (Application.loadedLevelName != "Start_Menu")
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
pauseMenu.SetActive(false);
Debug.Log(isPaused + " " + pauseMenu);
}
}或者将Awake()函数中的代码放入Start()函数中。
GameObject pauseMenu;
bool isPaused = false;
void Start()
{
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);
}
}其中一个应该能解决你的问题。如果第二次失败,第一次应该失败。
https://stackoverflow.com/questions/37764032
复制相似问题