cocos studio中setDesignResolutionSize有什么用?

时间:2016-07-14 12:20:47

标签: c++ cocos2d-x cocostudio

在我的appDelegate类中,我有类似的代码,

  

使用cocos studio

auto glview = director->getOpenGLView();
    if(!glview) {
        glview = GLViewImpl::createWithRect("HelloCpp", Rect(0, 0, 960, 640));
        director->setOpenGLView(glview);
    }
    director->getOpenGLView()->setDesignResolutionSize(960, 640, ResolutionPolicy::SHOW_ALL);

正常cocos2dx项目中的位置

  

没有cocos工作室

appDelegate类中的代码就是这样。

auto glview = director->getOpenGLView();
    if(!glview) {
        glview = GLViewImpl::create("My Game");
        director->setOpenGLView(glview);
    }

我的疑问是,setDesignResolutionSize是强制性的,每个设备大小也应该是相同的吗?

1 个答案:

答案 0 :(得分:3)

在cocos2dx中,所有坐标均基于设计分辨率大小。通过这样做,您可以在所有屏幕尺寸上使用相同的坐标系。分辨率策略SHOWALL显示整个区域没有任何变化,但由于并非所有设备都具有相同的大小,因此根据屏幕尺寸,您将拥有黑色边框。

NO_BORDER策略会裁剪一些表面,但根据设备屏幕大小,您将会丢失世界的某些部分。如果您打算这样做,那么您必须确保重要部件在安全区域内,以便您的游戏不受影响。如果您使用NO_BORDER策略,则必须注意一件事。设计分辨率与可见区域不同。如果您决定选择策略,则需要visibleSize()和visibleOrigin()函数来帮助您获取精灵和游戏对象的位置。

也许最好的方法是使用FIXED_HEIGHT或FIXED_WIDTH政策。如果您选择FIXED_HEIGHT政策,那么您只需告诉cocos2dx您要在任何设备的可见区域中显示整个高度。可以根据设备切断宽度。将重新计算设计分辨率大小的宽度大小。如果你不关心游戏的宽度,你可以采取这种方法。换句话说,如果你的游戏需要游戏区域的整个高度,那么FIXED_HEIGHT就是你的政策。

您可能已经猜到FIXED_WIDTH策略的工作方式类似但宽度而不是高度。

FIXED_WIDTH和FIXED_HEIGHT都会根据您的选择修改设计分辨率的宽度或高度。这样做的好处是所产生的设计分辨率与可见区域相同。这使您更容易找到,将精灵定位在游戏中。

有关这些主题的更多信息,请参阅以下链接。有很清楚的解释。虽然它们很老,但它们会让你知道它是如何工作的。 http://www.cocos2d-x.org/wiki/Multi_resolution_support

http://cocos2d-x.org/wiki/Detailed_explanation_of_Cocos2d-x_Multi-resolution_adaptation