SpriteKit游戏开发点滴(3) 屏幕大小模式

SpriteKit的屏幕大小模式有如下四种:

@availability(iOS, introduced=7.0)
enum SKSceneScaleMode : Int {
    
    case Fill /* Scale the SKScene to fill the entire SKView. */
    case AspectFill /* Scale the SKScene to fill the SKView while preserving the scene's aspect ratio. Some cropping may occur if the view has a different aspect ratio. */
    case AspectFit /* Scale the SKScene to fit within the SKView while preserving the scene's aspect ratio. Some letterboxing may occur if the view has a different aspect ratio. */
    case ResizeFill /* Modify the SKScene's actual size to exactly match the SKView. */
}

下面逐一进行解释,为了方便解释,我们不妨将原始屏幕的大小设置为1536*1536(正方形),并设置同样大小的背景图片居中显示,然后观察其显示效果:

原始图片的效果:

SpriteKit游戏开发点滴(3) 屏幕大小模式_第1张图片

Fill

这个模式是不管原始屏幕大小,直接将其填充满设备的全屏:(左为iphone5S,右为iPad)

SpriteKit游戏开发点滴(3) 屏幕大小模式_第2张图片 SpriteKit游戏开发点滴(3) 屏幕大小模式_第3张图片

这种塞满屏幕就完事的模式,在实际适配屏幕时太粗糙。

AspectFill

这种模式是不改变原始屏幕分辨率的比例,调整大小使得原始屏幕能完全覆盖住适配的屏幕,但是往往会有一部分内容因为超出屏幕而没能被显示出来。

SpriteKit游戏开发点滴(3) 屏幕大小模式_第4张图片 SpriteKit游戏开发点滴(3) 屏幕大小模式_第5张图片

AspectFill始终会按照原始图片的比例填充满屏幕,但是会有部分内容因为超出屏幕而无法显示。我们常常用AspectFill模式来对多屏幕分辨率进行适配。关于适配的技巧将在后面的博客中进行详细介绍。这是我最常用的模式

AspectFit

这种模式是不改变原始屏幕分辨率的比例,调整大小使得原始屏幕能完整显示在适配的屏幕上,但是适配屏幕上无法填满时,会用黑色填充空隙部分

SpriteKit游戏开发点滴(3) 屏幕大小模式_第6张图片 SpriteKit游戏开发点滴(3) 屏幕大小模式_第7张图片

这个模式是一个非常保险和省事的模式,会将原始屏幕的内容完整绘制到当前的屏幕上,但是用颜色来填充空隙的做法,往往会让强(chu)迫(nv)症(zuo)玩家抓狂!!!比较好的做法是通过修改UI界面让黑色填充物完美地与游戏界面融合到一起(好像等于没说~)

ResizeFill

这个模式,嗯嗯...它到底是要闹哪样啊...

虽然官方的注释里写的是:Modify the SKScene's actual size to exactly match the SKView.

可是这exactly match到底是卖个什么萌啊!

SpriteKit游戏开发点滴(3) 屏幕大小模式_第8张图片 SpriteKit游戏开发点滴(3) 屏幕大小模式_第9张图片

你可能感兴趣的:(iOS,SpriteKit)