1

在我的 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 是否是强制性的,而且每个设备尺寸都应该相同吗?

4

1 回答 1

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

于 2016-07-21T21:36:41.247 回答