Какая польза от setDesignResolutionSize в студии cocos?

В моем классе 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, а также должно ли оно быть одинаковым для каждого размера устройства ???

0

Решение

в 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

2

Другие решения

Других решений пока нет …