Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 调用SKLabelNode时延迟?_Ios_Sprite Kit_Skscene_Sklabelnode - Fatal编程技术网

Ios 调用SKLabelNode时延迟?

Ios 调用SKLabelNode时延迟?,ios,sprite-kit,skscene,sklabelnode,Ios,Sprite Kit,Skscene,Sklabelnode,从一个SKScene转换到另一个时,我遇到了一个稍微延迟(滞后)的问题。通过注释不同的代码位,我将其缩小为SKLabelNode,我猜这是它在调用时加载/缓存字体,这会导致在陈述新的SKScene时出现小的延迟/结巴 其他人是否注意到了这一点,当您仅使用单个SKScene(如默认模板)时,这一点就不那么明显了,因为通常的启动延迟会导致减速。有人知道如何解决这个问题吗?有没有办法预加载字体?我想我可以在启动时将字体加载到UIViewController上,看看是否可以使用SKScene访问它,有什

从一个
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];
        ...

通常的预加载技巧是在应用程序委托中创建资产的“虚拟”版本,该版本应在运行时有效地在您的案例中缓存自定义字体。这也将有助于查明这是否是真正的问题-在Sprite Kit中,有许多方法很难有效地追踪口吃。我在SKScene渲染中遇到延迟,因为我使用多个UIViewController在我的应用程序中导航,而不是使用一个视图为斯科维尤;找到了答案。当我重构代码以使用单个UIViewController时,场景之间的转换就变得无缝了


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

延迟取决于字体的加载。最好预先加载字体、声音和任何其他您打算使用的资源,这样在第一次实际使用时就不会有延迟

您可以在安装程序中预加载:

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

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

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

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

并宣布:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [self setupFonts];
    return YES;
}
应用程序的加载速度没有变慢,而且在整个应用程序中工作得完美无缺。
在这里找到答案:

小心不要加载整个字体系列。 如果我加载“黑板SE”,它将需要4-6秒,并且似乎可以工作

但如果我定期加载黑板,它几乎是瞬时的,大约100ms或更少

以下是您应该使用的实际字体名称列表: 学术旅行计划

阿尔尼奥尔德

阿尔尼罗

美国打字机之光

美国打字机聚光灯

美国打字机压缩版

美国打字员

美国打字机

美国打字机黑体字

苹果色墨汁

苹果果酱

ApplesdGothicno超轻

ApplesdGothicno半黑体

Appledgothicno培养基

appledgothicno正则

ApplesdGothicno Bold

ApplesdGothicno灯光

阿里亚尔姆特

Arial粗体斜体

Arial斜体

Arial黑体字

阿里亚赫布鲁黑体

阿里亚尔韦布光

阿里亚尔赫布鲁

阿里亚尔oundedtbold

阿维尼重型

阿韦尼斜肌

阿维尼黑

阿维尼书

艾维尼布莱克酒店

阿维尼重型飞机

艾文耐尔灯

中斜角大道

阿维尼培养基

阿维尼灯塔

阿维尼罗马酒店

阿韦尼图书公司

下一代医疗大道

下一个黑体

AvenirNext超轻

埃文尼尔内克德米博尔德酒店

下一代重型塔利克大道

下一代重型飞机

AvenirNext培养基

AvenirNext斜体

AvenirNext超轻斜体

AvenirNext粗体斜体

下一个常规

AvenirNext DemiBoldItalic

AvenurNextCondensed正则表达式

AvenirNextCondensed Mediumitarial

AvnerNextCondensed UltraLightItalic

AvinerNextCondensed超轻

AvenurNextCondensed粗体斜体

AVENIRNEXT浓缩斜体

AVENIRNEXT浓缩培养基

AvenirNextCondensed重型塔利克

AvinerNextCondensed重型卡车

AvenurNextCondensed半黑体斜体

AvenurNextCondensed DemiBold

AvenurNextCondensed Bold

孟加拉国

孟加拉国黑体

巴斯克维尔博尔德酒店

巴斯克维尔半黑体

巴斯克维尔黑体字

巴斯克维尔

巴斯克维尔半博尔德酒店

巴斯克维尔斜体

Bodonisvtytwotitctt手册

Bodonisvtytwotitctt粗体

博多尼斯维特布基塔酒店

Bodonisvtytwositt BookIt

BodonisvtyTwositCtt粗体

博多尼斯维特书

博多尼斯维特两本科学书

博多尼奥纳门西特酒店

布拉德利黑体

黑板灯

普通黑板

黑板粗体

粉碎机

科钦黑体

科钦黑体字

科钦斜体

科钦

铜版

铜板灯

铜版粗体

信使

信使斜线

信使

粗体信使

快递员

信使

速递员

信使黑体字

大马士革黑体

大马士革

大马士革之光

大马士革媒体

大马士革黑体

德瓦那加里桑加曼

德瓦那加里桑加曼黑体

不大胆

斜体字

没有

迪恩黑体

丁诺德

幼发声带

豪迈

斜体委婉语

法拉

Futura中型

富图拉浓缩培养基

富图拉医疗

富图拉酒店

吉扎普波尔德酒店

吉扎普

乔治亚博尔迪特
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [self setupFonts];
    return YES;
}