5

由于目前无法将 a 的颜色设置SKSceneclearColor

-(id)initWithSize:(CGSize)size {
    if (self = [super initWithSize:size]) {


        self.backgroundColor = [SKColor clearColor];

    }
    return self;
}

如此处所示:链接

那么如何设置背景图片SKScene呢?请尽可能具体,示例代码会很棒!

4

4 回答 4

6

迅捷4版本:

    let background = SKSpriteNode(imageNamed: "CheckIcon")
    background.size = frame.size
    background.position = CGPoint(x: frame.midX, y: frame.midY)
    addChild(background)
于 2018-02-16T15:39:46.907 回答
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;
}
于 2013-11-05T02:57:18.923 回答
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视图即将布局时和视图显示时不同。一般来说,我发现heightandwidth被切换了。

我从这里找到了这个解决方案: 背景图像大小 Sprite Kit 游戏

于 2014-06-30T07:47:49.680 回答
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];
于 2014-10-05T10:07:44.493 回答