创建应用时,除了根据检测到的设备创建和加载不同的资源外,还有更简单的方法来扩展图像吗?只需要经历为iPhone 6 +,6,5,4创建不同图像的痛苦,并根据设备调整屏幕上的各种定位,这似乎有点荒谬。
此外,我正在使用Spritekit粒子效果,并且必须为不同的设备重新创建这些效果。
我知道你可以拥有Xcode高档的iPhone 5资产,但显然权衡的是图像清晰度。如果你可以为最大的iPhone设计一切,并让它自动缩小为其他设备,那将是很好的。没有这样的方式,有吗?
答案 0 :(得分: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遵循相同的宽高比,所以你不需要担心但4s压扁的小SKScene(没有三个纹理图集就无法修复)
答案 1 :(得分:0)
所有关于不同型号的宽高比都是如此。
幸运的是,只有两个iOS
设备4:3或16:9。这对Android设备来说要困难得多,因为有更多不同的宽高比。
点击此处查看相关信息: iOS Device Resolution
您可以为每个宽高比拍摄最高分辨率的图像,并使用texturepacker进行缩放。 这将花费一些钱,但它是值得的。(不隶属于公司)。
或者查看免费的android内容!: