从 UIImage 设置 SKSpriteNode

Posted

技术标签:

【中文标题】从 UIImage 设置 SKSpriteNode【英文标题】:Setting SKSpriteNode from UIImage 【发布时间】:2015-06-04 21:40:49 【问题描述】:

我在 时遇到问题。我在 UIImage 上使用桥接器,将图像转换为 SKTexture,然后使用该 SKTexture 创建一个新的 SKSpriteNode,但我的代码不断崩溃,并出现以下警报“线程 1:EXC_BAD_ACCESS(代码=1,地址=0x0)”

CGImageRef textureImage =  (__bridge CGImageRef)(theUIImage);
SKTexture *heroTexture = [SKTexture textureWithCGImage:textureImage];
SKSpriteNode *hero = [SKSpriteNode spriteNodeWithTexture:heroTexture size:CGSizeMake(64, 64)];

【问题讨论】:

【参考方案1】:

而不是将 UIImage 桥接到 CGImageRef,您应该使用:

CGImageRef textureImage = [theUIImage CGImage];

如果你的图像不是 nil,它应该可以工作。

另外,你可以试试:

SKTexture *heroTexture = [SKTexture textureWithImage:theUIImage];

一个小提示;始终检查“nullity”。

【讨论】:

我已经尝试过使用和不使用网桥,但我的线程仍然崩溃!我还进行了测试以确保图像不为零(我在图像中添加了一个 UIImageView 集以进行测试)。当我使用本地图像进行实例化时,代码工作正常: SKSpriteNode *hero= [SKSpriteNode spriteNodeWithImageNamed:@"hero.png" normalMapped:YES]; 那么,“theUIImage”的来源是什么? 我正在使用相机拍照并将其设置为 UIImage 我认为这可能与图像有关。您还应该检查 CGImageRef 是否为 0。【参考方案2】:

尝试使用图像创建纹理:[SKTexture textureWithImageNamed:...],然后使用它创建 Sprite:[SKSprite spriteWithTexture:....]。 (可能是 SpriteFromTexture)

【讨论】:

以上是关于从 UIImage 设置 SKSpriteNode的主要内容,如果未能解决你的问题,请参考以下文章

如何将SKSpriteNode作为PNG图像保存到相机胶卷?

UIImage 中的 SKTexture 看起来不同

我的 SKTexture 尺寸不适合我的 SKSpriteNode

SKSpriteNode 从屏幕上掉下来

如何在 UIButton 中的选定状态下从正常状态和标题文本设置 UIImage

将 SKLabelNode 设置为 SKSpriteNode Swift 的中心