为什么我的SKSpriteNodes不会出现在场景中?

1 sprite-kit skspritenode swift

我试图在场景中添加几个节点.当我运行应用程序时,我只有默认的灰色背景.这两个节点都不会出现在场景中.这是我有的:

class GameScene: SKScene {
    override func didMoveToView(view: SKView) {
        /* Setup your scene here */

        let jumper = SKSpriteNode(imageNamed:"Jumper")
        jumper.xScale = 0.25
        jumper.yScale = 0.25
        jumper.position = CGPointMake(50, 300)

        self.addChild(jumper)

        let blob = SKSpriteNode(imageNamed:"Blob")
        blob.position = CGPointMake(160, 30)
        blob.xScale = 0.5
        blob.yScale = 0.25

        self.addChild(blob)
    }
Run Code Online (Sandbox Code Playgroud)

我检查了图像标题,那里的一切都是正确的.

0x1*_*41E 10

问题

您的精灵不可见,因为您的场景并非完全位于模拟器的窗口内.默认情况下,场景的大小为1024 x 768(由GameScene.sks指定),而模拟器仅显示375 x 667点(如果您选择了iPhone 6/6s模拟器).除非正确设置场景的大小,否则模拟器窗口的左下角将不是场景的(0,0)位置.

要纠正这个问题,

方法1:

在GameScene.sks中更改场景的大小属性以匹配视图的大小.我建议你将场景大小设置为375 x 667(iPhone 6/6s).如果你这样做并将场景的scaleMode属性设置为.AspectFill(默认值),SpriteKit将自动缩放场景以适应iPhone 6 +,6s +,5和5s的视图.这将节省您将游戏移植到这些设备的时间.

方法2: 在视图控制器中,替换它

scene.scaleMode = .AspectFill
Run Code Online (Sandbox Code Playgroud)

有了这个

scene.scaleMode = .ResizeFill
Run Code Online (Sandbox Code Playgroud)

警告:使用此方法可行,但可能需要额外的工作才能将游戏移植到具有不同屏幕大小的其他iOS设备.