2016-04-17 28 views
0

Cocos2dx初学者在这里。使用Cocos2dx V3.10。雪碧宽度以适合所有分辨率cocos2dx

我读过很多关于跨iOS/Android等多平台支持的教程和文档,主要内容是获取它。我将setDesignResolutionSize与setContentScaleFactor结合使用,到目前为止工作情况良好。

我确实有一个问题,我不确定最好的方法来处理它。

我的游戏是肖像,我希望特定的精灵在iphone4s和iphone5上具有相同的宽度。

它们都使用相同的设计分辨率大小和内容比例因子,但在iphone4上,精灵小于iphone4(和iphone5)。

我附上了两张图片来演示我的意思。

enter image description here

enter image description here

正如你可以在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); 

} 

任何帮助非常感谢。

回答

2

这可以通过某种方式完成,无论您使用什么设备,游戏都会显得相同。所有的 首先,在你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(); 

您的游戏将现在看设备的相同无关,只要宽高比保持不变(这是相同的所有手机,但平板电脑不同)。

+0

感谢您的反馈,这种方法对我来说都是新的,所以我不得不放弃它。只是为了确认,如果我的自定义尺寸是说(w)320(h)480,我是否会将我的资产设计为这种尺寸的两倍,然后使用EXACT_FIT策略?平板电脑将如何工作,以及与iPhone屏幕不同比例的屏幕(即androids)如何?非常感谢 – type25

+0

包括iOS和Android在内的所有手机屏幕都具有大致相同的宽高比〜1.77,所以这不会成为问题。 – mohakagr

+0

谢谢。最后一件事,setContentScaleFactor我觉得很有用,因为它是缩放字体等....我必须手动做到这一点? – type25