当从一个SKScene
转换到另一个时,我遇到了一个轻微的延迟(滞后)问题。通过注释掉各种代码,我把范围缩小到了SKLabelNode
,我的猜测是,它在调用时加载/缓存字体,这会导致在声明新SKScene
时出现小延迟/口吃。
有没有其他人注意到这一点,当您只使用单个SKScene
(如默认模板)时,这一点就不那么明显了,因为减速只是在通常的启动延迟中丢失。有没有人知道解决这个问题的方法,有没有办法预先加载字体?我想我可以在启动时将字体加载到UIViewController
上,看看是否可以使用SKScene
访问它,有什么想法吗?
-(id)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {
[self setScore:0];
[self setBackgroundColor:[SKColor blackColor]];
SKLabelNode *labelNode = [SKLabelNode labelNodeWithFontNamed:@"System"];
[labelNode setText:@"00000"];
[labelNode setFontSize:20.0];
[labelNode setPosition:CGPointMake(CGRectGetMidX(self.frame),500)];
[labelNode setName:@"SCORE"];
[labelNode setAlpha:1.0];
[self addChild:labelNode];
[self setScoreLabel:labelNode];
...
发布于 2013-12-04 19:37:51
延迟是基于加载您的字体。最好是预加载字体、声音和任何其他想要使用的资源,这样在第一次实际使用时就不会有延迟。
您可以在安装程序中使用以下方法预加载:
SKLabelNode *preload = [SKLabelNode labelNodeWithFontNamed:@"System"];
[preload setText:@"anything"];
正如注释中所指出的,只有在使用无法通过iOS获得的字体时,才需要预装。
发布于 2014-05-14 13:53:51
我注意到的一件事是,如果在创建SKLabelNode时不使用“真实”字体名,则会得到所提到的延迟。因为"System“不是一个实际的字体名称,所以您正在经历延迟。尝试选择系统列出的实际字体之一。(例如,尝试"HelveticaNeue“而不是”System“)。
发布于 2013-12-04 08:55:20
通常的预加载技巧是在应用程序委托中创建资产的“虚拟”版本,这将有效地在运行时缓存自定义字体。这也将有助于找出这是否是真正的问题-有许多方法,口吃是很难在雪碧套件中有效地追踪。
https://stackoverflow.com/questions/20380954
复制