SKSpriteNode对象初始化在iPhone 6 plus中显示不正确的分析及解决
Posted 大熊猫侯佩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SKSpriteNode对象初始化在iPhone 6 plus中显示不正确的分析及解决相关的知识,希望对你有一定的参考价值。
一个SpriteKit项目在其他设备上运行都无问题(无论是真机或是模拟器),但是在iPhone6 Plus上会出现精灵对象纹理被过度放大的现象:
从上图中大家可以看到无论是主角或是道具球都过大了.
看了一下精灵图片是放在atlas纹理集文件夹中的:
可以看到PowerUp和Player都有对应缩放的版本:Player.png,Player@2x.png以及Player@3x.png.
在各个图片的属性中检查图片的尺寸也都正确,看不出神马问题…
找到SKSpriteNode对象初始化的代码看看:
let orbNode = SKSpriteNode(imageNamed: "PowerUp")
貌似也没什么问题…突然想到上述图片都放在纹理集中,那么都应该被Xcode做过附加操作以形成额外的整张图片,是不是这里出了问题?
将Player共3张图片放到Assets.xcassets中:
PowerUp也如法炮制,然后再次编译运行代码,这回所有精灵的尺寸都是正确的了,没有发生放大的情况!看来@x后缀只对直接的图片资源有效,因为原来你是将图片放到纹理集中,所以系统处理就会出错.
但如果我只想用纹理集
以上是关于SKSpriteNode对象初始化在iPhone 6 plus中显示不正确的分析及解决的主要内容,如果未能解决你的问题,请参考以下文章
Swift 2 迁移错误:在 SKSpriteNode 的指定初始化器中不能再传入 nil
Swift - 必须调用超类 SKSpriteNode 错误的指定初始化程序