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


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



appDelegate类中的代码是这样的。
auto glview = director->getOpenGLView();
    if(!glview) {
        glview = GLViewImpl::create("My Game");
        director->setOpenGLView(glview);
    }

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

最佳答案

在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

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

10-13 07:15