gpt4 book ai didi

background - SpriteKit——多任务处理的正确方法

转载 作者:行者123 更新时间:2023-12-02 23:49:39 26 4
gpt4 key购买 nike

我试图在代码中到处搜索:解释文档在进入后台时会做什么,或者甚至有时会暂停,但无济于事-有人可以指导我在进入后台时建议做什么到启用 Sprite 套件的游戏中的背景吗?

我应该调用scene.paused = YES吗?或者我如何确认后台没有绘图,这样我就可以避免被iOS终止,而iOS不允许我这样做?

谢谢!

最佳答案

SpriteKit 确实还没有得到很好的记录,可能是因为它太新了,相对较少的开发人员实现了它。 SpriteKit 应该在后台运行时暂停动画,但根据我的经验(和 harrym17's ),它会导致内存访问错误并完全退出应用程序而不是后台运行。

根据 Apple 开发者论坛,这似乎是 SpriteKit 中的一个已知错误(它并不总是在后台时暂停动画,因为它应该)导致 memory access errors as per harrym17's comment 。这是一个对我有用的简短修复 - 我的应用程序在后台运行时一直崩溃,自从添加此代码后一切正常。

(感谢Keith Murray在Apple论坛上的这段代码;据我所知,他还没有在SO上发布它)。

AppDelegate.h 中,确保导入 SpriteKit:

#import <SpriteKit/SpriteKit.h>

AppDelegate.m 中,编辑 applicationWillResignActive 方法:

- (void)applicationWillResignActive:(UIApplication *)application
{
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.

// pause sprite kit
SKView *view = (SKView *)self.window.rootViewController.view;
view.paused = YES;
}

这对于您的 applicationDidBecomeActive 方法:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.

// resume sprite kit
SKView *view = (SKView *)self.window.rootViewController.view;
view.paused = NO;
}

显然,通过 AVAudioSession 播放音频时后台存在其他问题;提到了解决方法 in this thread .

关于background - SpriteKit——多任务处理的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19014012/

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