【问题标题】:Background Image for Sprite-Kit SceneSprite-Kit 场景的背景图像
【发布时间】:2015-09-27 05:19:54
【问题描述】:

我现在在 Sprite-Kit 场景中工作,我想将背景设置为例如名为“bgimage”的图像。我将如何通过 gamescene.swift 以编程方式执行此操作?

import UIKit
import SpriteKit
import CoreGraphics
class gameScene: SKScene {


}

【问题讨论】:

  • 对类使用大写名称是一种很好的做法。建议将gameScene 替换为GameScene,但没有必要。

标签: swift sprite-kit


【解决方案1】:

您可以将背景图像声明为SKSpriteNode,将其位置设置为屏幕中间并将其添加到您的场景中。

import UIKit
import SpriteKit

class gameScene: SKScene {
    var background = SKSpriteNode(imageNamed: "bgimage")

    override func didMoveToView(view: SKView) {
        background.position = CGPoint(x: frame.size.width / 2, y: frame.size.height / 2)
        addChild(background)
    }
}

还要确保您在 images.xcassets 中有图像。

【讨论】:

  • 设置它的大小来填充场景也很棒。
  • 我认为如果您使用设备特定图像作为背景而不是通用图像会更好看。这样一来,每个设备都有自己的图像版本,但也许只有我一个人。
  • @TheCodeComposer 适用于 iOS 的好主意,但不适用于 OS X。
  • 虽然这确实有效,但我注意到它会占用大量设备资源,尤其是在旧设备上。
【解决方案2】:
import UIKit
import SpriteKit
import CoreGraphics
class gameScene: SKScene {

var background = SKSpriteNode(imageNamed: "bgimage")

override func didMoveToView(to view: SKView) {
background.zPosition = 1
background.position = CGPoint(x: frame.size.width / 2, y: frame.size.height / 2)

addChild(background)


}
}

zPosition 应该低于游戏场景中的所有其他节点

【讨论】:

  • Swift 4 语法更改 override func didMove(to view: SKView) { 另外,感谢 zPosition 的提示。
【解决方案3】:

全尺寸图片背景

override func didMove(to view: SKView) {

    super.didMove(to:view)

    DispatchQueue.main.async{

        self.background.zPosition = 0
        self.background.position = CGPoint(x: self.size.width / 2, y: self.size.height / 2)
        self.background.size = CGSize(width: self.size.width, height: self.size.height)
        self.addChild(self.background)

    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多