如何caching或预加载SKLabelNode字体?

我正在做一个Sprite Kit应用程序,在我的场景中,我添加了一个SKLabelNode。 当我加载SKScene时,我注意到了一个相当大的滞后尖峰。 在分析应用程序后,我发现它来自创build一个带有纸莎草字体的SKLabelNode(尽pipe字体无关紧要)。 当我删除标签时,场景几乎立即启动,但标签需要额外的1-3秒。

我很确定这是从加载字体,因为当我回到主菜单,再次玩游戏,它立即再次启动。

现在有一种方法可以提前预加载字体,所以当玩家select这个级别的时候没有很大的停顿。

我们有这个问题,事实certificate,我们根本不使用“正确”的字体名称。 在我们的例子中,当实例化我们的SKLabelNode时,我们使用的是“Menlo”而不是“Menlo-Regular”,并且导致了几秒的处罚。 一旦我们使用正确的字体名称,延迟不再发生。

(奇怪的是,SKLabelNode仍然find了Menlo并使用了它,所以我们不知道我们的字体名称是否正确,可能是因为系统需要找出合适的替代品而造成的。 ,find我们打算使用的字体,但这需要一段时间,因此延迟。)

我遇到过同样的问题。 将以下代码添加到您的第一个场景中,使用您的字体名称:

 SKLabelNode *preload = [SKLabelNode labelNodeWithFontNamed:@"Avenir"]; preload.text = @"text"; 

如果您不提供文本,则不会加载字体。 请注意,您不需要将标签作为孩子添加到场景中。

Interesting Posts