SpriteKit支持不同的屏幕尺寸

时间:2015-01-12 09:41:14

标签: ios objective-c sprite-kit

我想创建game like this。这是益智游戏。

我的问题是我需要为每个设备提供不同的图像吗?所以现在我们可以看到Apple有5种不同的移动设备尺寸:

  • iPhone 3.5''
  • iPhone 4''
  • iPhone 4.7''
  • iPhone 5.5''
  • ipad公司

所以我的问题是,如果我有iPad视网膜的资产,那么我还需要另外4个相同的资产,背景和iPhone尺寸的拼图图像?或者我可以优化它?例如,如果我们创建3D游戏,openGL渲染只需要的帧,我们不需要像我们拥有的那么多设备那样多,只需要一个。

2 个答案:

答案 0 :(得分:2)

检测设备并设置您的资产。

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
    {
        CGSize result = [[UIScreen mainScreen] bounds].size;

        if (result.height == 480)
        {
            // Setup iPhone 4, 4s, iPod Touch Assets
        }
        else
        {
            // Setup iPhone 5, 5s, 6 Assets
        }
    }
    else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    {
        //Setup iPad Assets
    }

答案 1 :(得分:2)

支持不同屏幕尺寸时需要考虑许多因素。需要考虑的一个重要因素是您是否需要单独的非视网膜和视网膜(@ 2x)版本的资产。你可以决定只使用视网膜图像并让它们在非视网膜设备上缩小,但它不会被优化,因为你将完整的纹理加载到内存中。

要考虑的下一个因素是资产规模。您是否计划让游戏在更大的设备上拥有更大的资产?或者您是否计划保持资产大小相同但为更大的设备提供更大的视口? (即iPhone可能具有可滚动视图,而iPad不需要滚动,因为它会有更大的视图)

要考虑的下一个因素是资产的纵横比。当宽高比不同时(例如通常在背景图像,闪屏等情况下),您肯定需要不同的资源。

我建议您使用Apple的Images.xcassets文件夹。它允许您在所有不同设备上组织所有资产。有关不同分辨率场景缩放的更多信息,建议您阅读我的答案here