artG
artG

Reputation: 235

Detect which Scene is up in ViewController ios

Basically I have four scenes and on viewcontroller, I want to detect in which scene am I because, I have background music in viewcontroller, and I want to pause music in some Scenes. I found how to detect scenes in viewController, but it was in swift, and I know only basics of objective c.
Edited

SKView *skView =(SKView *)self.view;
TitleScene *sceneTitle = [TitleScene sceneWithSize:self.view.bounds.size];
BonusScene *sceneBonus = [BonusScene sceneWithSize:self.view.bounds.size];
GameScene *sceneGame = [GameScene sceneWithSize:self.view.bounds.size];
DifficultScene *sceneDifficult = [DifficultScene sceneWithSize:self.view.bounds.size]; 

   if(skView){
        if(sceneTitle){
            NSLog(@"Iam in sceneTitle");
        }
        if(sceneGame){
            NSLog(@"Iam in sceneGame");
        }
        if(sceneDifficult){
            NSLog(@"Iam in sceneDifficult");
        }
        if(sceneBonus){
        NSLog(@"Iam in sceneBonus");
        }
        else{
            NSLog(@"else");
        }

}

now, when start app, it runs through every if statement once,even when Iam only in TitleScene. What did wrong?

Upvotes: 0

Views: 311

Answers (1)

Knight0fDragon
Knight0fDragon

Reputation: 16837

Give each scene a name, then in your viewcontroller class, just do

SWIFT:

if let skView = view as? SKView, let scene = skView.scene
{
   switch(scene.name)
   {
     case "name1":
     default:()
   }


}
else
{
   //Something is wrong, we do not have an SKView or a SKScene
}

Objective C:

SKView *view = (SKView*)self.view ;
if(view)
{
    SKScene *scene = view.scene;
    if(scene)
    {
        NSString *name = scene.name;

       //compare names here
    }
}

Upvotes: 1

Related Questions