2016-07-14 132 views
0

在我AppDelegate類我有代碼這樣的事情,而使用科科斯工作室cocos studio中setDesignResolutionSize的用法是什麼?

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

沒有是沒有必要的,但我覺得還是不錯的,如果你檢查的第一個代碼createWithRect它會創建的960 * 640的分辨率使用它,如果設置了表面的尺寸。我認爲這樣做的目標是因爲手機有很多不同的尺寸,所以如果你的設備沒有這種高寬比,會發生什麼?只是在這種情況下,它會顯示所有,但圖像將被拉伸,ResolutionPolicy :: NO_BORDER它將裁剪一些表面。但這只是一種方法來支持「多分辨率設備」 – OscarLeif

回答

1

在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

相關問題