2014-12-03 52 views
0

创建应用程序时,除了根据检测到的设备创建和加载不同的资产之外,是否还有其他更简单的方法来缩放图像?看起来有点荒谬,不得不经历为iPhone 6+,6,5,4创建不同图像的痛苦,并且还要根据设备调整屏幕上的各种位置。更简单的方式来扩展各种iPhone尺寸的资产?

此外,我正在使用Spritekit粒子效果,并且还必须为不同设备重新创建这些效果。

我知道你可以拥有Xcode高档的iPhone 5资产,但显然这种折衷是图像清晰度。如果您可以为最大的iPhone设计一切,并且可以自动缩小其他设备,那将会很不错。没有这样的方式,是吗?

+0

不是真的。考虑到全分辨率纹理会消耗大量内存,但设备越旧,可用内存就越少。因此,尽管您可以在较旧的设备上缩小最高分辨率的图像,但由于内存使用率过高,或者由于无法处理大的纹理,旧版设备甚至无法运行该应用程序。 – LearnCocos2D 2014-12-03 09:50:46

回答

0

定义ViewController.m微文件

#define IS_WIDESCREEN (fabs((double)[ [ UIScreen mainScreen ] bounds ].size.height - (double)568) < DBL_EPSILON) 

调用以下方法

现在看到下面这个方法做工精细,每iPad设备的代码,如果你有1024 * 768,但很少长宽比对于iPhone5,5s和6,6 +而言,这种方法会被压扁,但这种方法是为所有设备创建游戏的最快方式,因为它会根据屏幕比率压扁SKScene。

-(void)addAspect 
{ 

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) { 

     if (IS_WIDESCREEN) { 

      _globalscaleX=(1024.0f*2)/(568*2); 
      _globalscaleY=(768.0f*2)/(320*2); 

      LoaderScreen = [loadingScene sceneWithSize:CGSizeMake(_yourSKView.bounds.size.width*_globalscaleX, _yourSKView.bounds.size.height*_globalscaleY)]; 
       //LoaderScreen.scaleMode = SKSceneScaleModeAspectFit; 
      LoaderScreen.scaleMode = SKSceneScaleModeFill; 


     } else { 


      if([[UIScreen mainScreen] bounds].size.height==480) 
      { 

       _globalscaleX=(1024.0f*2)/(480*2); 
       _globalscaleY=(768.0f*2)/(320*2); 
      } 
      else 
      { 
       _globalscaleX=(1024.0f*2)/(568*2); 
       _globalscaleY=(768.0f*2)/(320*2); 
      } 


      LoaderScreen = [loadingScene sceneWithSize:CGSizeMake(_yourSKView.bounds.size.width*_globalscaleX, __yourSKView.bounds.size.height*_globalscaleY)]; 
       LoaderScreen.scaleMode = SKSceneScaleModeFill; 
     } 

    } else { 

     _deviceType=ipad; 
     _globalscaleX=1.0f; 
     _globalscaleY=1.0f; 

     LoaderScreen = [loadingScene sceneWithSize:CGSizeMake(_yourSKView.bounds.size.width, _yourSKView.bounds.size.height)]; 
     LoaderScreen.scaleMode = SKSceneScaleModeAspectFill; 
    } 

    // Present the scene. 
    [_yourSKView presentScene:LoaderScreen]; 


} 

2)现在第二溶液和最佳的解决方案(质量明智)是去两个纹理图谱,其中第一纹理地图遵循ipad公司系列比率和第二5和6系列因为图5和6遵循相同的纵横比,以便你不不需要担心,但4秒钟就会被压扁的小SKScene(不能固定没有三个纹理图谱)

0

这是所有关于不同模型的长宽比。 幸运的是,只有两个iOS设备4:3或16:9。这对于Android设备来说会更难,因为有更多不同的宽高比。

在这里获得的信息上: iOS Device Resolution

你可以采取的最高清晰度的图像每个纵横比和使用texturepacker做缩放。 这将花费一些钱,但它是值得的(不附属于公司)。

或检出的免费的Android的东西!:

Android Asset Studio

相关问题