2016-04-08 12 views
0

私はすべてのシーンのバックグラウンド用に1つの画像を持っています。バックグラウンド用のコードを書くことができるので、私が得たあらゆるシーンに書き込む必要はありません。私はそれを置く必要がありますか?すべてのシーンの1つの背景画像目的c

background = [SKSpriteNode spriteNodeWithImageNamed:@"backMenu.png"]; 
    titleBackground.position = CGPointMake(CGRectGetMidX(self.frame),CGRectGetMidY(self.frame)); 
    titleBackground.size = self.frame.size; 
    titleBackground.zPosition = -10; 
    [self addChild:background]; 
+0

すべての設定を含む 'SKSpriteNode'のサブクラスを作成することができますが、シーンに追加したい場合は、それをシーンに追加する必要があると思います。 – Gliderman

答えて

1

複数のシーンで繰り返されるコードがある場合は、BaseSceneを作成してそこに配置することができます。したがって、シーン間で共有されるすべては、BaseSceneに入ります。

BaseScene.h:

#import <SpriteKit/SpriteKit.h> 

@interface BaseScene : SKScene 

@end 

BaseScene.m

#import "BaseScene.h" 

@interface BaseScene() 

@property(nonatomic, strong) SKSpriteNode *background; 

@end 

@implementation BaseScene 


-(void)didMoveToView:(SKView *)view{ 

    self.background = [SKSpriteNode spriteNodeWithImageNamed:@"backMenu"]; 
    [self addChild:self.background]; 

} 

@end 

GameScene.h(ないSKSceneからBaseSceneから今GameScene継承)

#import <SpriteKit/SpriteKit.h> 
#import "BaseScene.h" 


@interface GameScene : BaseScene 

@end 

GameScene.m

#import "GameScene.h" 

@implementation GameScene 

-(void)didMoveToView:(SKView *)view { 
    /* Setup your scene here */ 

    [super didMoveToView:view]; 
} 
@end 

最後に、あなたは順番に現在のシーンに背景ノードを追加するBaseSceneのdidMoveToView:を呼び出すBaseSceneのすべてのサブクラスで[super didMoveToView:view];を呼び出します。

0

SKNodeが一つだけのシーンに属することができます:今のところ私はこの基本的なコードを使用します。そのため、シーンの背景にSKSpriteNodeを追加する必要があります。

必要に応じてシーンを作成して破棄すると仮定すると、背景としてSKTextureへの参照を維持しておく必要があります。

background = [SKSpriteNode spriteNodeWithTexture:backgroundTex]; 

あなたは、シーンへのアプリケーションに基づいてこれを追加することになりますが、必要なときに

次に、その場合には、SKSpriteNodeを作成します。

上記の例では、backgroundTexが参考になります。あなたはそれを維持するあるオブジェクトに隠すべきです。テクスチャマネージャをお持ちの場合は、すでに割り当てられているテクスチャを参照名で尋ねることができます。

関連する問題