Skip to main content

moving from one UIViewController to another from sprite kit SKScene

create a new NSNotificationCenter inside your UIViewController class inside viewDidAppear function 


1).

-(void)viewDidAppear:(BOOL)animated
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(disMissViewController) name:@"disMissViewController"  object:nil];

}


2.)

create selector 


-(void)disMissViewController{
   

    //in case of story board

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main"   bundle:nil];
    mainView= [storyboard instantiateViewControllerWithIdentifier:@"main" ];

    //in case of code

     mainView=[[UIViewController alloc] init];
    [self presentViewController:newviewController animated:YES completion:^{
        
    }];


    //remove Notification
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:@"disMissViewController"
                                                  object:nil];
}


3) calling NSNotificationCenter from your skscene 


    [[NSNotificationCenter defaultCenter] postNotificationName:@"disMissViewController" object:self];
   

thats it work done remember 


one thing skview maintain cache so removing Scene from view does not remove it all


such as

-(void)willMoveFromView:(SKView *)view
{
    
    
    [self removeAllChildren];
    [self removeAllActions];
    [self removeFromParent];
    [self.view presentScene:nil];
}



this would remove  Scene from view not skview from your viewController its skivew that maintain cache for high performance so you need to remove skview from viewController  add few lines to your code for that 


this would remove skview from your parent viewController



-(void)viewDidDisappear:(BOOL)animated {
    if( self.skView ) {
        NSLog(@"%s - removing skView",__PRETTY_FUNCTION__);
        [self.skView removeFromSuperview];
         self.skView = nil;
     
    }

}

for more information click the below link

https://developer.apple.com/library/ios/qa/qa1889/_index.html

Comments

Popular posts from this blog

Better Memory management with PixiJS or How to manage cpu and cpu memory in PixiJS.

PixiJS is my favorite framework when i am looking for a web games specially for mobile or desktop  PixiJS is fast blazing fast and you can get a decent FPS even on older device.   so here is my optimization techniques for PixiJs 1. manage your sprites in a better way use spritesheet to reduce the draw calls create big sprite sheet which contain multiple sprites can be draw in gpu with a single draw call. use TexturePacker  https://www.codeandweb.com/texturepacker  best tool when its comes to spritesheet 2. for floating point calculation round off calculation for example let  speed = 0.75 ; let  position = 100 ; console . log ( Math . round ( speed * position )) 3. don't create very big canvas when u need a big canvas size game just try to create a small canvas and translate it. 4. its very important one managing TextureCache in memory you can get all TextureCache list by using  Object.entries(PIXI.utils.TextureCache); so even you use ap...

adding particles Effect in pixijs using https://pixijs.io/pixi-particles-editor/

adding particle in pixijs is very easy using the below tool more information can be found below https://github.com/pixijs/pixi-particles https://pixijs.io/pixi-particles-editor/ required packages  /// < reference path = "node_modules/pixi-particles/ambient.d.ts" /> import 'pixi-particles' code of particle delcare a     global variable   private emitter ?: Emitter ; const img = PIXI . Texture . from ( "./assets/images/particle.png" ); this . emitter = new Emitter ( this ,[ img ],{ "alpha" : { "start" : 0.62 , "end" : 0.39 }, "scale" : { "start" : 0.1 , "end" : 0.9 , "minimumScaleMultiplier" : 1.25 }, "color" : { "start" : "#ffff8f" , "end" : ...