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

AwD*_*ven 4 sprite-kit

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

Dob*_*pir 7

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

__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];
    });
});
Run Code Online (Sandbox Code Playgroud)

  • 我昨天太醉了回应.很高兴听到它整齐地工作:) (11认同)