由于目前无法通过
将颜色设置为SKScene
到clearColor
-(id)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {
self.backgroundColor = [SKColor clearColor];
}
return self;
}
如下所示:LINK
然后 如何设置SKScene
的背景图片?请尽可能具体,示例代码会很棒!
答案 0 :(得分:5)
使用场景中居的SKSpriteNode
:
-(id)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {
// Replace @"Spaceship" with your background image:
SKSpriteNode *sn = [SKSpriteNode spriteNodeWithImageNamed:@"Spaceship"];
sn.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
sn.name = @"BACKGROUND";
[self addChild:sn];
}
return self;
}
答案 1 :(得分:3)
swift 4版本:
let background = SKSpriteNode(imageNamed: "CheckIcon")
background.size = frame.size
background.position = CGPoint(x: frame.midX, y: frame.midY)
addChild(background)
答案 2 :(得分:0)
这个解决方案帮助了我:
将您的代码调用/添加从viewDidLoad
到viewWillLayoutSubviews
- (void)viewWillLayoutSubviews
{
[super viewWillLayoutSubviews];
// Configure the view.
SKView * skView = (SKView *)self.view;
skView.showsFPS = YES;
skView.showsNodeCount = YES;
// Create and configure the scene.
SKScene * scene = [MyScene sceneWithSize:CGSizeMake(skView.bounds.size.width*2,skView.bounds.size.height*2)];
scene.scaleMode = SKSceneScaleModeAspectFill;
// Present the scene.
[skView presentScene:scene];
}
据我所知,原因是skView.bounds
在视图即将布局时以及显示视图时有所不同。一般来说,我发现height
和width
已切换。
我从这里找到了这个解决方案: Background image size Sprite Kit Game
答案 3 :(得分:0)
这是一种更优雅的方式,无论您现在或将来的分辨率如何,您的图像都将与背景大小相符。
如果您想支持横幅广告,则必须将高度减少50或32个设备单位,并将位置向上/向下移动25或16像素(纵向或横向)。 如果你想同时支持两种情况,我还建议你为风景与肖像画一个不同的图像,或者你必须开始信装拳。
在场景中......
SKSpriteNode* background = [SKSpriteNode spriteNodeWithImageNamed:@"myBackground"];
background.size = self.frame.size;
background.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
[self addChild:background];