c++ - cocos studio中setDesignResolutionSize有什么用?

标签 c++ cocos2d-x cocostudio

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

while using 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 项目中

with out cocos studio

appDelegate类中的代码是这样的。

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

我的疑问是,是否必须设置 DesignResolutionSize,并且每个设备尺寸都应该相同吗???

最佳答案

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

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

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

正如您可能已经猜到的那样,FIXED_WIDTH 策略的工作原理类似,但针对的是宽度而不是高度。

FIXED_WIDTH 和 FIXED_HEIGHT 都会根据您的选择修改设计分辨率的宽度或高度。这样做的好处是生成的设计分辨率将与可见区域相同。这使您可以更轻松地在游戏中定位和定位 Sprite 。

可以在以下链接中找到有关这些主题的更多信息。有很多明确的解释。尽管它们有点旧,但它们可以让您了解这一切是如何运作的。 http://www.cocos2d-x.org/wiki/Multi_resolution_support

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

关于c++ - cocos studio中setDesignResolutionSize有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38374041/

相关文章:

c++ - 对 'MainScene::createScene()' 的 undefined reference collect2 : error

android - 如何在 Android 中使用 .so 和 .h 文件?

javascript - 运行CocosStudio生成的场景?

c++ - 在运行时用一个小部件替换另一个小部件并显示新的小部件

c++ - 散列中的单独链接

c++ - 格式化 C++ 输出两列不同的理由

c++ - Cocos2d-x:多次使用后CCMoveTo不流畅

cross-platform - CocoStudio:可以为跨平台使用生成动态大小的场景吗?

cross-platform - cocostudio:如何使用导出的场景文件。 CCSceneReader 对任何人都有效吗?

c++ - 为什么在此处重写字符串文字(C++)?