我在 Swift 中使用 sprite-kit 并使用该SKTexture(rect:inTexture:)
函数设置纹理。我没有使用内置纹理图集,而是使用SKTexture(imageNamed:)
. 这是因为我的数据文件中已经有图集和子纹理位置(以像素为单位),而不是单独的图像。
因此,当图像为@2x(大小为像素尺寸的一半)时,对象的 是正确的.size()
。SKTexture
我通过除以大小来计算子矩形坐标(在单位坐标中,0-1),但我需要知道原始图像比例,以便我可以将像素尺寸除以它。
这是我运行良好的代码:
// Create the texture as a sub-rect of the parent texture
if let parentTexture = textures[parentTextureId] {
let size = parentTexture.size()
var subRect = CGRectFromString(subRectString)
subRect = CGRectMake(
(subRect.origin.x / 2) / size.width,
(size.height - ((subRect.origin.y / 2) + (subRect.size.height / 2))) / size.height,
(subRect.size.width / 2) / size.width,
(subRect.size.height / 2) / size.height)
let texture = SKTexture(rect: subRect, inTexture: parentTexture)
textures[textureId] = texture
}
问题是我必须在所有这些/ 2
调整中对比例进行硬编码。如何获得纹理的原始图像比例(或实际像素尺寸),以便无需硬编码即可正确计算子矩形?