我正在尝试编写一些程序性地创建位图字体的代码,为了做到这一点,我一直在创建SKTextures,然后将它们转换为cgImage / UIImage(因为这是初始化SKTextureAtlas所必需的)。但是cgImage在模拟器上似乎无法可靠运行,而在设备上却可以正常运行。以下代码说明了将其放入SKScene中的意义:
let chars = "ABCDEFGHIJKLMNOP"
var y: CGFloat = 0
for each in chars {
let letter = String(each)
let label = SKLabelNode(text: letter)
let view = SKView()
let texture = view.texture(from: label)!
let cgImage = texture.cgImage() // HERE IS WHERE IT GOES WRONG!
let tex2 = SKTexture(cgImage: cgImage) // OR POSSIBLY HERE!
let sprite = SKSpriteNode(texture: tex2)
sprite.position.x = 100
sprite.position.y = y
addChild(sprite)
y += 30
}
在模拟器上,某些字符没有出现(奇怪的是,确实是相同的字符),而在设备上它们都很好地显示了。肯定是将其转换为cgImage,然后返回到SKTexture,这会产生问题,如果您删除该代码可以正常工作,但是如果我将cgImage转换为UIImage也会遇到相同的问题,因此我认为它一定是有问题的cgImage 。我认为模拟器与设备上的这种不同行为意味着错误吗?但是我已经搜索过,但没有发现其他人遇到同样的问题。如果有人知道出了什么问题或有解决方法,我将非常感激。