C# 在Unity C中生成全局函数#

C# 在Unity C中生成全局函数#,c#,unity3d,C#,Unity3d,有人能给我指一个可以在unity中实现全局“后退按钮”功能的教程吗 目前,我可以通过“更新”功能用此代码覆盖它 if (Input.GetKeyDown(KeyCode.Escape)) { //Do something you need Debug.Log("Back button is pressed"); } 然而,缺点是,我需要在每个场景中的一个活动“Gameobject”中附加此功能 是否有任何方法可以使此函数全局化,从而使此“更新”函数始终在每个场景中侦听?您可以将此脚

有人能给我指一个可以在unity中实现全局“后退按钮”功能的教程吗

目前,我可以通过“更新”功能用此代码覆盖它

if (Input.GetKeyDown(KeyCode.Escape))
{
   //Do something you need
   Debug.Log("Back button is pressed");
}

然而,缺点是,我需要在每个场景中的一个活动“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
    将场景添加到当前加载的场景中

一种设计模式是有一个初始场景(名为persistantsecene或bootstrapper),其中存在持久对象,如上面的第一个脚本。它使用
Single
选项导航到下一个场景,在下一个场景中保持持久(DontDestroyOnLoad)对象,同时丢弃仅属于上一个场景的其他对象


此外,如果您需要方便的访问,您可以将其设置为单身:

public static MyMonobehaviour Instance;

void Awake(){
    Instance = this;
    DontDestroyOnLoad(this.gameObject);
}

void Update(){
    ...
}

“我需要在每个场景中的每个“游戏对象”中附加这个功能。”不,你为什么这么想?包含该代码的脚本应该只附加到一个活动的游戏对象,它应该可以工作是的,我指的是一个活动的“游戏对象”。谢谢你指出这一点。。。我已经编辑了问题Bijan的答案很可能是你想要的need@Hikari我还在我的答案中添加了更多关于LoadScene的注释。我使用了Bijan的答案。。。。也谢谢你的帮助(⌒_⌒;)回答得很好!!非常感谢你的帮助,比扬!('65377;ω··································♡
public static MyMonobehaviour Instance;

void Awake(){
    Instance = this;
    DontDestroyOnLoad(this.gameObject);
}

void Update(){
    ...
}