如果您有一個在場景中重複的代碼,那麼您可以創建一個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(現在GameScene
從BaseScene
繼承,而不是從SKScene
)
#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
的每個子類,調用BaseScene,這反過來又增加了背景節點到當前場景的didMoveToView:
叫[super didMoveToView:view];
。
你可以用你所有的設置創建'SKSpriteNode'的子類,但是如果你想在場景中使用它,我認爲你仍然需要將它添加到場景中。 – Gliderman