有人可以指出一个可以统一使用全局“后退按钮”功能的教程吗?
目前,我可以使用此代码通过“更新”功能来覆盖它
if (Input.GetKeyDown(KeyCode.Escape))
{
//Do something you need
Debug.Log("Back button is pressed");
}
但是,缺点是,我需要在每个场景的一个活动“游戏对象”中附加此功能。
也许有什么方法可以使该功能全局化,因此这个“更新”功能总是在每个场景中监听吗?
答案 0 :(得分:4)
您可以将此脚本附加到初始场景中的gameObject。
void Awake(){
DontDestroyOnLoad(this.gameObject);
}
void Update(){
if (Input.GetKeyDown(KeyCode.Escape))
{
//Do something you need
Debug.Log("Back button is pressed");
}
}
DontDestroyOnLoad
使游戏对象离开场景后仍然存在。
要更改场景,可以使用以下选项之一调用SceneManager.LoadScene
:
Single
关闭所有当前加载的场景并加载一个场景。Additive
将场景添加到当前加载的场景中。如
SceneManager.LoadScene("OtherSceneName", LoadSceneMode.Single);
一种设计模式是拥有一个初始场景(例如,名为persistantScene或bootstrapper),其中存在诸如上述第一个脚本之类的持久对象。它使用Single
选项导航到下一个场景,在下一个场景中保留持久(DontDestroyOnLoad)对象,同时丢弃仅属于前一个场景的其他对象。
此外,如果需要轻松访问,可以将其设置为单例:
public static MyMonobehaviour Instance;
void Awake(){
Instance = this;
DontDestroyOnLoad(this.gameObject);
}
void Update(){
...
}