当从一个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];
...
访问它,任何人都有想法?
{{1}}
答案 0 :(得分:4)
延迟是基于字体的加载。最好预加载您打算使用的字体,声音和任何其他资源,以便在第一次实际使用时没有延迟。
您可以在设置中预加载:
SKLabelNode *preload = [SKLabelNode labelNodeWithFontNamed:@"System"];
[preload setText:@"anything"];
如评论中所述,只有在使用iOS无法提供的字体时才需要预加载。
答案 1 :(得分:4)
我注意到的一件事是,如果您在创建SKLabelNode时不使用“真实”字体名称,则会得到您提到的延迟。由于“系统”不是实际的字体名称,因此您遇到了延迟。尝试选择系统列出的实际字体之一。 (例如,尝试“HelveticaNeue”而不是“System”。)
答案 2 :(得分:1)
通常的预加载技巧是在您的app委托中创建资产的“虚拟”版本,这应该有效地在运行时缓存您的自定义字体。这也有助于确定这是否是真正的问题 - 有很多方法可以引入口吃,这些方法很难在Sprite Kit中有效追踪。
答案 3 :(得分:1)
我在SKScene渲染方面遇到了延迟,因为我使用多个UIViewControllers来浏览我的应用程序,而不是只有一个视图是SKView的UIViewController;找到了答案here。一旦我重构我的代码以使用单个UIViewController,SKScenes之间的转换变得无缝。
如果这不是您的问题,也许您可以在视图加载时实例化您的SKScenes,并在转换和呈现场景之前对场景内容进行任何更新。
答案 4 :(得分:1)
请注意,您不能加载整个字体系列。 如果我加载" 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
Arial字体-BoldItalicMT
Arial字体-ItalicMT
Arial字体-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
值得注意-粗体
值得注意的光强
的Optima正规
的Optima-斜体
的Optima-粗体
的Optima-BOLDITALIC
的Optima-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/
答案 5 :(得分:0)
我在“AppDelegate.m”中添加了这个方法:
- (void)setupFonts
{
SKLabelNode *preloadFontLabel = [SKLabelNode labelNodeWithFontNamed:@"cinnamonCake"];
[preloadFontLabel setText:@"Preload"];
}
并将其调用:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self setupFonts];
return YES;
}
该应用程序没有加载任何较慢,它在整个应用程序完美无缺地工作。 在这里找到答案:SKLabelNode delays app start