首页 > 解决方案 > Xcode 模拟器上 cgImage 的 SpriteKit 问题,但设备上没有

问题描述

我正在尝试编写一些在程序上创建位图字体的代码,为此我一直在创建 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 . 我认为模拟器与设备上的这种不同行为是否意味着错误?但我已经搜索并没有发现其他人遇到同样的问题。如果有人知道出了什么问题或有解决方法,我将不胜感激。

标签: swiftsprite-kitios-simulatorcore-graphicssktexture

解决方案


推荐阅读