繁体   English   中英

如何将字体分配给静态变量 C# Unity

[英]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”

在此处输入图片说明

假设您有一个可能称为UtilityMonoBehavior并且该Component处于“Convenience”状态。 Utility有上面提到的检查器变量Font

class Utility: MonoBehavior
{
   public Font happyFont;
}

在场景中的某个地方,您需要“那种字体”。

只需找到“Convenience”,然后找到Utility就可以了。

example = utility.happyFont;

注意 - 如果您不知道“如何查找或链接到”其他游戏对象,这是 Unity 中的绝对基础,我猜 OP 知道如何做到这一点。

在 Unity 中不能有“静态”或“单例”,这完全没有意义。

理解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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM