Sprite kit 如何异步加载场景,以便有一个加载屏幕?

Sprite kit 如何异步加载场景,以便有一个加载屏幕?,sprite-kit,Sprite Kit,我的场景加载可能需要一段时间,我希望能够显示加载的动画,但是,一切都会锁定。有没有办法异步加载下一个场景并在其准备就绪时获得回调?您可以使用调度块以进行并发执行。在异步块中加载场景,然后在主线程上执行回调方法,如下所示: __weak MyClass *weakself = self; dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){ //Background

我的场景加载可能需要一段时间,我希望能够显示加载的动画,但是,一切都会锁定。有没有办法异步加载下一个场景并在其准备就绪时获得回调?

您可以使用调度块以进行并发执行。在异步块中加载场景,然后在主线程上执行回调方法,如下所示:

__weak MyClass *weakself = self; 
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
    //Background thread
    //Load scene here
    dispatch_async(dispatch_get_main_queue(), ^(void){
        //Main thread
        //Call your callback method here
        [weakself sceneLoaded:loadedScene];
    });
});

SpriteKit会自己优雅地处理这一切吗?我需要为“加载场景”创建一个单独的视图来播放吗?或者我可以安全地共享同一个视图吗?你知道这非常有效。。。我想会有一些僵局的问题,但没有…苹果在SpriteKit上做得很好。谢谢你的提示。我昨天喝得酩酊大醉,没有反应。很高兴听到它被巧妙地解决了:)在块内部引用“self”会创建一个保留循环吗?可能需要创建一个弱引用以在块中使用,例如,如果您的场景称为MyScene,那么,_弱MyScene*weakself=self;在分派之前,\u async并改为使用[weakself sceneLoaded:loadedsecene]@如果我在“SplashScene”中,并且想使用上述代码加载“MainScene”,您能给我一个如何使用上述示例代码的示例吗?谢谢