swift - 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 . 我认为模拟器与设备上的这种不同行为是否意味着错误?但我已经搜索并没有发现其他人遇到同样的问题。如果有人知道出了什么问题或有解决方法,我将不胜感激。
解决方案
推荐阅读
- nlp - 如何解决 Kaldi ASR 特征提取错误?
- flutter - Future 执行后不显示小部件
- amazon-web-services - 低级多部分上传性能问题
- aframe - 如何从 HTML 按钮回调启动 WebXR?
- html - 我在使用 HTML 设计的网站中有一个“<<”元素
- outlook - Outlook Web 插件 -Office JS - 触发多个“DialogMessageReceived”事件
- c++ - C++17:如何判断一个类模板是否“更专业”
- python - 如何使用 Selenium 和 Python 在 google 上点击第一个 google 搜索结果
- ios - 将 Swift 5 库与 XCode 10.3 或 Swift 4.2 一起使用
- azure - IoTHubModuleClient 未收到消息