Cocos2dx初学者在这里。使用Cocos2dx V3.10。
我已经阅读了很多关于iOS / Android等多平台支持的教程和文档,主要是我得到它。我正在将setDesignResolutionSize与setContentScaleFactor结合使用,到目前为止它运行良好。
我确实有一个问题,我不确定接近它的最佳方法。
我的游戏是肖像,我想在iphone4s和iphone5上使用特定的精灵宽度相同。
它们都使用相同的设计分辨率大小和内容比例因子,但在iphone4上,精灵比iphone4(和iphone5)上的精灵要小。
我附上两张图片来证明我的意思。
正如你在iphone4上看到的那样,精灵与iphone5的边缘距离不是很远,我认为它的分辨率差异很小。
我是否需要为此分辨率创建另一组资产,我将如何设置这些资产?目前iphone4和iphone5都使用相同的比例和设计尺寸,即:
glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::NO_BORDER);
Size frameSize = glview->getFrameSize();
// if the frame's height is larger than the height of medium size.
if (frameSize.height > mediumResolutionSize.height)
{
director->setContentScaleFactor(MIN(largeResolutionSize.height/designResolutionSize.height, largeResolutionSize.width/designResolutionSize.width));
searchPaths.push_back("hd");
FileUtils::getInstance()->setSearchPaths(searchPaths);
}
任何帮助都非常感激。
答案 0 :(得分:4)
这可以通过某种方式完成,无论您使用何种设备,游戏都会看起来相同。 首先,在AppDelegate.cpp中注释掉以下所有代码
/* if (frameSize.height > mediumResolutionSize.height)
{
director->setContentScaleFactor(MIN(largeResolutionSize.height/designResolutionSize.height, largeResolutionSize.width/designResolutionSize.width));
}
// if the frame's height is larger than the height of small size.
else if (frameSize.height > smallResolutionSize.height)
{
director->setContentScaleFactor(MIN(mediumResolutionSize.height/designResolutionSize.height, mediumResolutionSize.width/designResolutionSize.width));
}
// if the frame's height is smaller than the height of medium sxize.
else
{
director->setContentScaleFactor(MIN(smallResolutionSize.height/designResolutionSize.height, smallResolutionSize.width/designResolutionSize.width));
}
*/
现在,确保所有资产都是根据画布尺寸开发的,理想情况下是您背景的大小。
假设尺寸为customWidth x customHeight。
现在编辑AppDelegate.cpp中的以下行,如下所示:
glview->setDesignResolutionSize(customWidth, customHeight, ResolutionPolicy::EXACT_FIT);
Size frameSize = glview->getFrameSize();
只要保持纵横比(所有手机都相同,但平板电脑不同),您的游戏无论设备如何都会看起来相同。