如果您有一个在场景中重复的代码,那么您可以创建一个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