在我的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是强制性的,每个设备大小也应该是相同的吗?
答案 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