[英]How to assign a Font to a static variable C# Unity
我需要为变量 m_StaticFont 分配字体。 问题是它需要是一个静态变量
private static Font m_StaticFont;
public static void updateData()
{
m_nameText.font = m_StaticFont;
}
Unity 与面向对象编程完全无关。
静态对游戏对象完全没有意义。
Font
只是某个特定游戏对象上的检查器变量。 (在非常不寻常的情况下(可能是动态生成字体!)您可以按名称在资产中找到它,请参阅文档,但通常您只需链接到资产,即字体,使用检查器变量,如您可以使用 Unity 项目中的 100 多种资产中的每一种。)
public Font happyFont;
假设你有一个游戏对象“Convenience”
假设您有一个可能称为Utility
的MonoBehavior
并且该Component
处于“Convenience”状态。 说Utility
有上面提到的检查器变量Font
。
class Utility: MonoBehavior
{
public Font happyFont;
}
在场景中的某个地方,您需要“那种字体”。
只需找到“Convenience”,然后找到Utility
就可以了。
example = utility.happyFont;
注意 - 如果您不知道“如何查找或链接到”其他游戏对象,这是 Unity 中的绝对基础,我猜 OP 知道如何做到这一点。
在 Unity 中不能有“静态”或“单例”,这完全没有意义。 †
由于诸如“全局变量”和“单例”之类的概念在 Unity 中完全没有意义,您要做什么?
Component
访问哪些内容?幸运的是,解决方案非常简单。 Unity 忘记在 Unity 中包含“预加载”或“普遍可用”场景(他们最终将在这些年中添加它)。
现在,单击一个按钮添加一个,再简单不过了。
这是对这个非常简单的过程的详细解释:
https://stackoverflow.com/a/35891919/294884
†请注意,显然,由于目前 C# 用于 Unity 中的Component
,您当然可以,简单地说 ints 或 floats ,拥有一个类(Unity 完全“未使用”,即与场景或游戏没有任何联系对象),像这样..
class ExampleSettings
{
public static int versionNumber;
}
显然,您可以在命名空间中的任何位置引用ExampleSettings.versionNumber
。 所以这是一个静态。 但它完全没有“与 Unity”的联系,你当然不能以任何方式使用实际的游戏对象,或者任何与 Unity 和游戏对象相关的东西。 (请记住,unity 只不过是一大堆游戏对象,其中的东西(例如字体)是游戏对象的一部分。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.