cocos2dx 中没有类似实度量的cm
选项,实际上我们不需要它。
但是 cocos2D-x 2.x 和 3.x 对于多分辨率问题(无论是 iDevices 还是 Android 设备)都有非常简单的解决方案,正如您在Multi-resolution support document中看到的那样。
事实上,您只需要设置您的DesignResolution
,然后想象您的目标设备将具有此分辨率。
如果目标设备确实具有此分辨率(或任何其他具有相同比率的设备),cocos2d 将处理修复屏幕,并且您的游戏在所有设备上看起来都相同。
当目标设备的比例不同时,您有很多选项 ( policy
) 来管理它。
例如,如果您使用Exact fit
策略,cocos2d 将强制您的游戏(和设计)适合目标设备屏幕(没有那个黑色边框)。
完全适合
整个应用程序在指定区域中可见,而无需尝试保留原始纵横比。可能会发生变形,并且应用程序可能会出现拉伸或压缩。
有关更多详细信息,请查看官方 wiki。
除了以上所有文字,我发现这个链接(来自 V-Play 引擎)及其Safe Zone
定义非常有趣,我强烈建议您像我一样使用此页面的推荐分辨率值来完成您的工作。
尽管此链接来自另一个引擎,但描述可以帮助您更好地理解一切。这是此页面术语与 cocos2d-x 术语之间的映射:
V-Play::letterbox => Cocos2dx::显示全部
V-Play::ZoomToBiggerSide => Cocos2dx::NoBorder
此外,您确实询问了 cocos2dx 开发中所需的图像大小:
如您所知,不同大小的图像与不同分辨率下的游戏外观无关,您可以为每个资产发布一个尺寸的游戏,并且您的游戏/应用程序在所有分辨率下看起来都不错,上面对分辨率政策的描述。
但是我们需要为每个资产提供多个图像大小,以优化内存使用。在这种情况下(作为 cocso2dx 解决方案)我们检查设备大小并标记适当的图像集(每个图像集位于一个具有相同结构/不同大小的文件夹中,如 HDR/HD/SD)作为资源的默认文件夹:
CCSize frameSize = pEGLView->getFrameSize();
if (frameSize.height > mediumResource.size.height)
{
searchPath.push_back(largeResource.directory); //mark HDR default
pDirector->setContentScaleFactor(largeResource.size.height/designResolutionSize.height); //handle scaling because of different between our programming-design-resolution and artist-design-canvase-resolution
}
else ...