gpt4 book ai didi

ios - 呈现 SKScene 后取消隐藏 UIButtons 时延迟?

转载 作者:可可西里 更新时间:2023-11-01 06:08:10 25 4
gpt4 key购买 nike

我遇到了意想不到的延迟/暂停,到目前为止的原因让我摸不着头脑。我有一个简单的游戏设置,其中 UIViewController 显示许多 UIButtons [PLAY GAME] [VIEW SCORES] 等,它们依次呈现不同的 SKScene

我的问题是,当我尝试从 UIViewController 将这些按钮的可见性设置为可见(之前在 viewDidLoad 中设置为隐藏)时,它们需要大约 5 秒才能实际显示。

@implementation ViewController
- (void)presentTitleScene {

// SHOW BUTTONS
[[self logoLabel] setHidden:NO];
[[self gameButton] setHidden:NO];
[[self scoreButton] setHidden:NO];
[[self creditsButton] setHidden:NO];

// PRESENT SCENE
SKScene *titleScene = [TitleScene sceneWithSize:[[self spriteKitView] bounds].size];
[titleScene setName:@"TITLE_SCENE"];
[titleScene setScaleMode:SKSceneScaleModeAspectFill];
[(SKView *)[self view] presentScene:titleScene];
[self setCurrentScene:titleScene];
}
@end

所有代码运行时会发生什么,SKScene 正确呈现,然后大约 5-6 秒后按钮出现?我对此有什么办法(强制更新),还是只是设计或接受它的情况?

这在模拟器和设备上都会发生。

编辑:

查看输出日志,您可以清楚地看到在调用 preloadTextureAtlases:withCompletionHandler: 之后,执行跳转到了另一个线程。方法 preloadTextureAtlases:withCompletionHandler: 在主线程上调用,它应该在后台线程上预加载 textureAtlas(s),但我的印象是 completionHandler 会回调到主线程, 这个假设是对的还是我错了?

EDIT_002:

移动到下面的答案。

最佳答案

关于 preloadTextureAtlases:withCompletionHandler:completionHandler 在后台线程上被调用,我假设与预加载图集的线程相同。我遇到的问题是我正在使用完成处理程序向我的 viewController 发送一个 NSNotification 说“ Assets 已加载,开始游戏”这个问题是“通知在发送它们的同一线程中传递来自”所以我的游戏也在后台线程中启动。因此,将 UIButtons 设置为可见的代码也在同一个后台线程上运行,因此它们对变得可见或隐藏的 react 有所延迟。

关于ios - 呈现 SKScene 后取消隐藏 UIButtons 时延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22534088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com