gpt4 book ai didi

c# - 在 Unity C# 中创建一个全局函数

转载 作者:行者123 更新时间:2023-11-30 20:25:36 24 4
gpt4 key购买 nike

谁能告诉我一个可以统一制作全局“后退按钮”功能的教程?

目前我可以使用这段代码通过“更新”功能覆盖它

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

然而,缺点是我需要在每个场景中将此函数附加到一个事件的“游戏对象”中。

是否有任何方法可以使这个功能全局化,因此这个“更新”功能总是在每个场景中监听?

最佳答案

您可以将此脚本附加到初始场景中的游戏对象。

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(){
...
}

关于c# - 在 Unity C# 中创建一个全局函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51378473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com