【问题标题】:Swift: SpriteKit not rendering sprites in correct sizeSwift:SpriteKit 没有以正确的大小渲染精灵
【发布时间】:2014-07-12 17:09:54
【问题描述】:

编辑 3:嗯,我已经解决了这个问题。似乎在 iOS 8 中,您现在可以从 scene.sks 文件中加载场景。所以在这种情况下,游戏正在加载一个分辨率为 1024x768 的 .sks 文件。这就是图像无法正确显示的原因。将 ViewController 更改为在 iOS 8 之前的工作方式(这里解释为:Swift and Spritekit won't run on device running iOS 7.1)似乎解决了这个问题。感谢所有试图帮助我的人。 :D

我正在使用最新的 Xcode 测试版在 SpriteKit 和 Swift 中创建一个游戏(好吧,我正在移植一个我已经用 Obj-C 制作的游戏)。我有一个问题,SpriteKit 似乎没有正确渲染我的精灵,渲染它们的尺寸比它应该的尺寸小。如果我提供原生 iPhone 分辨率的背景,请使用以下代码添加它:

    let background = SKSpriteNode(imageNamed: backgroundName)
    background.position = CGPoint(x: self.size.width / 2, y: self.size.height / 2)
    self.addChild(background)

产生这个:

精灵图像比它应该的要小,因为图像是 640x1136。我错过了什么吗?

编辑:嗯,看起来图像被渲染了大约 50%。使它们大 50% 可以正确显示它们,但它们的尺寸错误(大 50%)...

编辑 2:嗯,这是我使用的图像分辨率正确的证据:

【问题讨论】:

  • 如果图像在视网膜屏幕上是一半大小,那么您可能没有将它们标记为 2x,但如果您的图像只有 640 x 1136,那么它将是视网膜屏幕大小的一半因为它有两倍的像素。确保区分点和像素。
  • @CHBuckingham 图像已正确放置在 xcassets 文件夹中。另外,点是非视网膜分辨率的,不是吗?
  • 我评论得太快了,并假设您在 iPad 模拟器分辨率上运行。一个 640 x 1136 像素的图像应该适合 iPhone Retina 屏幕显示。所以你的源图像要么不是那个密度或分辨率,要么你的场景有不同的大小或比例。
  • @CHBuckingham 如何检查或更改场景大小或比例?
  • 场景应该有 xScale 和 yScale 的属性,以及 self.size.width 和 self.size.height。

标签: swift sprite-kit xcode6 skspritenode


【解决方案1】:

我遇到了同样的问题。您必须声明您的纹理一次且仅一次,然后将其加载到每个精灵中。如果你 println("精灵:\(精灵)") 你的精灵你会看到纹理丢失了。

class test : SKSpriteNode
{
    let textureImage = SKTexture(imageNamed:"spriteImage")


    func load sprites() {

        sprite = SKSpriteNode(texture: textureImage )
    }
}

【讨论】:

    【解决方案2】:

    您需要做的就是使其大小相同(在 didMoveToView 中):

    self.size = view.frame.size // makes the size of the scene the same size as the frame, idk
    let background = SKSpriteNode(imageNamed: "background") // if you actually need this tho
    background.size = self.frame.size
    

    【讨论】:

      【解决方案3】:

      确保您的场景没有以某种奇怪的方式缩放或设置。我使用最新的 xcode/spritekit 进行的测试适用于这样大小的图像。

      【讨论】:

      • 嗯,不,它似乎没有按比例缩放到我可以在代码中查看的程度。此外,图像已正确存储在 xcassets 文件夹中,所以我不知道可能是什么问题
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-17
      • 2011-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多