cocos2dx 中没有像cm 这样的实数度量选项,实际上我们不需要它。
但是 cocos2D-x 2.x 和 3.x 对于多分辨率问题(无论是 iDevices 还是 Android 设备)都有非常简单的解决方案,正如您在 Multi-resolution support document 中看到的那样。
事实上你只需要设置你的DesignResolution然后想象你的目标设备会有这个分辨率。
如果目标设备真的有这个分辨率(或任何其他具有相同比例的设备),cocos2d 将处理修复屏幕,您的游戏在所有设备上看起来都一样。
当目标设备的比例不同时,您有很多选择 (policy) 来管理它。
例如,如果您使用Exact fit 策略,cocos2d 将强制您的游戏(和设计)适应目标设备屏幕(没有黑色边框)。
精确匹配
整个应用程序在指定区域可见,无需尝试
以保留原始纵横比。可能会发生失真,并且
应用程序可能会出现拉伸或压缩。
更多详情请查看official wiki。
除了以上所有单词之外,我发现This Link(来自 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 ...