c# - Unity 中的全局变量(在所有场景中更改字体大小、颜色)
问题描述
我正在尝试在 Unity 中构建一个应用程序,我想做的一件事是能够从设置场景中更改字体大小和颜色。我解决这个问题的方法是使用全局变量并尝试从设置场景访问和更改它,然后让所有其他场景从设置变量中获取它们的字体大小。
到目前为止,我已经构建了一个全局变量类(如下所示),并试图通过单击设置类中的按钮来访问它。我不确定这是否是解决这个问题的最佳方法,我也不确定如何让所有其他场景从这个全局类中获取信息并在新场景加载时更新它。
public static class Globals
{
public static int FontSize {
get{
return FontSize;
}
set{
FontSize = value;
}
}
}
解决方案
要在场景之间保留数据,您可以:
- 使用 PlayerPrefs
- 使用 DontDestroyOnLoad
- 使用全局变量
该视频深入解释了如何使用每一个,并解释了利弊。 https://www.youtube.com/watch?v=WchH-JCwVI8
然而,它可能有点过时(2016 年)。
现在:“建议避免使用 DontDestroyOnLoad 来持久化您希望在场景加载中幸存的管理器游戏对象。相反,创建一个包含所有管理器的管理器场景并使用 SceneManager.LoadScene(, LoadSceneMode.Additive) 和 SceneManager.UnloadScene 来管理您的游戏进度。”</p>
推荐阅读
- salesforce - 关于 SOQL 中的 PMD 规则
- tcp - TM4C1294NCPDT:发送数据 2/3 小时后以太网连接中断
- r - 用公共行映射两个不同的数据框并将它们组合在一起
- java - @JsonNaming 不与 lombok builder 一起使用
- jquery - Jquery隐藏一切不等于变量
- javascript - 以 TypeScript 友好的方式填充动态 React Router URL 路径参数
- java - 无法为 java 邮件会话查找 JNDI 资源。无法连接到主机,端口:localhost,25;超时-1;
- devise - 如果从视图发起(例如密码重置),Devise Mailer 视图如何访问请求对象
- typescript - 组件代码错误时组件测试通过
- c# - 读取 Streamreader 值