致电SKLabelNode时延迟?

当从一个SKScene转换到另一个SKScene时,我遇到了轻微延迟(滞后)的问题。 通过注释掉各种代码,我把它缩小到了SKLabelNode ,我的猜测就是它在调用时加载/缓存字体,这会在说明新的SKScene时导致一个小的延迟/ SKScene

有没有其他人注意到这一点,当你使用单个SKScene (如默认模板)作为减速只是在通常的启动延迟中丢失时,它就不那么明显了。 有没有人知道这方面的方法,有没有办法预加载字体? 我想我可以在启动时加载UIViewController上的字体,看看我是否可以通过SKScene访问它,任何人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]; ... 

延迟基于字体的加载。 最好预加载您打算使用的字体,声音和任何其他资源,以便在第一次实际使用时没有延迟。

您可以在设置中预加载:

 SKLabelNode *preload = [SKLabelNode labelNodeWithFontNamed:@"System"]; [preload setText:@"anything"]; 

如评论中所述,只有在使用iOS无法提供的字体时才需要预加载。

我注意到的一件事是,如果在创建SKLabelNode时不使用“真实”字体名称,则会得到您提到的延迟。 由于“系统”不是实际的字体名称,因此您遇到了延迟。 尝试选择系统列出的实际字体之一。 (例如,尝试“HelveticaNeue”而不是“System”。)

通常的预加载技巧是在应用程序委托中创建资产的“虚拟”版本,这应该有效地在运行时缓存自定义字体。 这也有助于确定这是否是真正的问题 – 有很多方法可以引入难以在Sprite Kit中高效追踪的口吃。

我在SKScene渲染方面遇到了延迟,因为我使用多个UIViewControllers来浏览我的应用程序,而不是只有一个视图是SKView的UIViewController; 在这里找到答案。 一旦我重构我的代码以使用单个UIViewController,SKScenes之间的转换变得无缝。

如果这不是您的问题,也许您可​​以在视图加载时实例化SKScenes,并在转换和呈现场景之前对场景内容进行任何更新。

请注意,您没有加载整个字体系列。 如果我加载“Chalkboard SE”,它将需要4-6秒,并且似乎工作。

但如果我加载ChalkboardSE-Regular,它几乎是瞬间~100ms或更短。

以下是您应该使用的实际字体名称列表:AcademyEngravedLetPlain

AlNile粗体

AlNile

AmericanTypewriter光强

AmericanTypewriter-CondensedLight

AmericanTypewriter-CondensedBold

AmericanTypewriter

AmericanTypewriter冷凝

AmericanTypewriter粗体

AppleColorEmoji

AppleSDGothicNeo薄

AppleSDGothicNeo,超轻

AppleSDGothicNeo-SemiBold

AppleSDGothicNeo介质

AppleSDGothicNeo正规

AppleSDGothicNeo粗体

AppleSDGothicNeo光强

ArialMT

宋体,BoldItalicMT

宋体,ItalicMT

宋体,BoldMT

ArialHebrew粗体

ArialHebrew光强

ArialHebrew

ArialRoundedMTBold

艾文莉重

艾文莉斜

艾文莉黑

艾文莉图书

艾文莉,BlackOblique

艾文莉,HeavyOblique

艾文莉光强

艾文莉-MediumOblique

艾文莉介质

艾文莉-LightOblique

艾文莉罗马

艾文莉,BookOblique

AvenirNext-MediumItalic

AvenirNext粗体

AvenirNext,超轻

AvenirNext-DemiBold

AvenirNext-HeavyItalic

AvenirNext重

AvenirNext介质

AvenirNext斜体

AvenirNext-UltraLightItalic

AvenirNext-BOLDITALIC

AvenirNext正规

AvenirNext-DemiBoldItalic

AvenirNextCondensed正规

AvenirNextCondensed-MediumItalic

AvenirNextCondensed-UltraLightItalic

AvenirNextCondensed,超轻

AvenirNextCondensed-BOLDITALIC

AvenirNextCondensed斜体

AvenirNextCondensed介质

AvenirNextCondensed-HeavyItalic

AvenirNextCondensed重

AvenirNextCondensed-DemiBoldItalic

AvenirNextCondensed-DemiBold

AvenirNextCondensed粗体

BanglaSangamMN

BanglaSangamMN粗体

巴斯克维尔粗体

巴斯克维尔-SemiBoldItalic

巴斯克维尔-BOLDITALIC

巴斯克维尔

巴斯克维尔-SemiBold

巴斯克维尔斜体

BodoniSvtyTwoITCTT图书

BodoniSvtyTwoITCTT粗体

BodoniSvtyTwoITCTT-BookIta

BodoniSvtyTwoOSITCTT-BookIt

BodoniSvtyTwoOSITCTT粗体

BodoniSvtyTwoOSITCTT图书

BodoniSvtyTwoSCITCTT图书

BodoniOrnamentsITCTT

BradleyHandITCTT粗体

ChalkboardSE光强

ChalkboardSE正规

ChalkboardSE粗体

Chalkduster

科钦粗体

科钦 – BOLDITALIC

科钦斜体

科钦

铜版

铜版,光

铜板粗体

信使

信使斜

信使BoldOblique

快递粗体

CourierNewPSMT

CourierNewPS-BoldMT

CourierNewPS-ItalicMT

CourierNewPS-BoldItalicMT

DamascusBold

大马士革

DamascusLight

DamascusMedium

DamascusSemiBold

DevanagariSangamMN

DevanagariSangamMN粗体

狄多粗体

狄多斜体

狄多

DINAlternate粗体

DINCondensed粗体

EuphemiaUCAS

EuphemiaUCAS粗体

EuphemiaUCAS斜体

法拉

富利介质

富利-CondensedMedium

富利-MediumItalic

富利-CondensedExtraBold

GeezaPro粗体

GeezaPro

佐治亚BOLDITALIC

格鲁吉亚粗体

格鲁吉亚斜体

格鲁吉亚

GillSans

GillSans斜体

GillSans-BOLDITALIC

GillSans光强

GillSans-LightItalic

GillSans粗体

GujaratiSangamMN粗体

GujaratiSangamMN

GurmukhiMN粗体

GurmukhiMN

STHeitiSC介质

STHeitiSC光强

STHeitiTC介质

STHeitiTC光强

黑体斜

黑体光强

黑体,粗体

黑体

黑体-BoldOblique

黑体-LightOblique

HelveticaNeue-BOLDITALIC

HelveticaNeue-灯

HelveticaNeue斜体

HelveticaNeue-UltraLightItalic

HelveticaNeue-CondensedBold

HelveticaNeue-MediumItalic

HelveticaNeue薄

HelveticaNeue介质

HelveticaNeue-ThinItalic

HelveticaNeue-LightItalic

HelveticaNeue-超轻

HelveticaNeue粗体

HelveticaNeue

HelveticaNeue-CondensedBlack

HiraKakuProN-W6

HiraKakuProN-W3

HiraMinProN-W6

HiraMinProN-W3

HoeflerText正规

HoeflerText-BlackItalic

HoeflerText斜体

HoeflerText黑

IowanOldStyle粗体

IowanOldStyle-BOLDITALIC

IowanOldStyle斜体

IowanOldStyle罗马

凯拉萨

凯拉萨粗体

KannadaSangamMN

KannadaSangamMN粗体

KhmerSangamMN

KohinoorDevanagari光强

KohinoorDevanagari图书

KohinoorDevanagari介质

LaoSangamMN

MalayalamSangamMN

MalayalamSangamMN粗体

马里昂正规

马里昂斜体

马里昂粗体

MarkerFelt薄

MarkerFelt-宽

门罗,BOLDITALIC

门罗正规

门罗粗体

门罗斜体

DiwanMishafi

值得注意的粗体

值得注意的是,光

舰正规

舰斜体

舰粗体

舰,BOLDITALIC

舰,ExtraBlack

OriyaSangamMN

OriyaSangamMN粗体

帕拉蒂诺罗马

帕拉蒂诺斜体

帕拉蒂诺粗体

帕拉蒂诺-BOLDITALIC

纸莎草冷凝

纸莎草

PartyLetPlain

SavoyeLetPlain

SinhalaSangamMN

SinhalaSangamMN粗体

SnellRoundhand黑

SnellRoundhand粗体

SnellRoundhand

Superclarendon正规

Superclarendon-BOLDITALIC

Superclarendon光强

Superclarendon-BlackItalic

Superclarendon斜体

Superclarendon-LightItalic

Superclarendon粗体

Superclarendon黑

符号

TamilSangamMN

TamilSangamMN粗体

TeluguSangamMN

TeluguSangamMN粗体

吞武里,大胆

吞武里

吞武里,光

TimesNewRomanPS-BoldItalicMT

TimesNewRomanPSMT

TimesNewRomanPS-BoldMT

TimesNewRomanPS-ItalicMT

投石机,BOLDITALIC

TrebuchetMS

TrebuchetMS粗体

TrebuchetMS斜体

宋体,BOLDITALIC

宋体斜体

宋体

宋体粗体

ZapfDingbatsITC

Zapfino

请参阅https://gilesey.wordpress.com/2015/01/14/ios-spritekit-font-loading-times-of-sklabelnodes/

我在“AppDelegate.m”中添加了这个方法:

 - (void)setupFonts { SKLabelNode *preloadFontLabel = [SKLabelNode labelNodeWithFontNamed:@"cinnamonCake"]; [preloadFontLabel setText:@"Preload"]; } 

并称之为:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [self setupFonts]; return YES; } 

该应用程序没有加载任何较慢,它在整个应用程序完美无缺地工作。 在这里找到答案: SKLabelNode延迟应用程序启动