지난 글에서 Visual Studio Project를 생성하고 이전 소스 코드 및 resources 복사가 완료된 상태에서 이제 에러를 하나씩 잡아 나가야됩니다.
우선 코드 수정을 시작하기 전에 local git 생성을 해서 원본 상태를 기록하고 시작하는걸 추천 드립니다.
자, 준비가 되었으면 일단 컴파일을 한 번 시도해봅니다.
저같은 경우에는 1251개 에러가 일단 보이는데, 하나 씩 수정 해보겠습니다.
1. Director 초기화 코드
[cocos2d-x 2.1.2]
// initialize director
CCDirector *pDirector = CCDirector::sharedDirector();
pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());
winSize = CCSizeMake(800,480);
viewSize = CCEGLView::sharedOpenGLView()->getFrameSize();
// Set the design resolution
CCEGLView::sharedOpenGLView()->setDesignResolutionSize(winSize.width, winSize.height, kResolutionNoBorder);
CCPoint vOrigin = CCEGLView::sharedOpenGLView()->getVisibleOrigin();
CCSize vSize = CCEGLView::sharedOpenGLView()->getVisibleSize();
float scalex = winSize.width/viewSize.width;
float scaley = winSize.height/viewSize.height;
[cocos2d-x 4.0]
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if (!glview) {
glview = GLViewImpl::create("Mr Big Two");
director->setOpenGLView(glview);
}
auto viewSize = glview->getFrameSize();
auto winSize = Size(800, 480);
// Set the design resolution
glview->setDesignResolutionSize(winSize.width, winSize.height, ResolutionPolicy::NO_BORDER);
2. 클래스명 변경
Visual Studio에서 Ctrl+H 를 눌러서 Project 내에 모든 파일에 대해 아래 문자들을 변경합니다.
cocos2d-x 2.1.2 | cocos2d-x 4.0 |
CCApplication | Application |
CCAnimation | Animation |
CCAnimationCache | AnimationCache |
CCArray | Vector |
CCSize | Size |
CCPoint | Point |
CCRect | Rect |
CCObject | Ref |
CCNode | Node |
CCLayer | Layer |
CCSet | Set |
CCEvent | Event |
CCLabelBMFont::create | Label::createWithBMFont * Bitmap font 생성자 |
CCSprite | Sprite |
CCMenuItemSprite | MenuItemSprite |
CCLog | CCLOG |
ccp | Point |
ccpAdd | + 연산자 사용 |
ccc3 | Color3B |
ccc4 | Color4B |
CCDirector | Director |
CCDirector::sharedDirector() | Director::getInstance() |
unscheduleAllSelectors | unscheduleAllCallbacks |
CCHttpRequest | HttpRequest * httpclient header 추가 해줘야함 #include "network/HttpClient.h" using namespace cocos2d::network; |
CCHttpResponse | HttpResponse |
HttpRequest::kHttpPost | HttpRequest::Type::POST |
callfuncND_selector | CC_CALLBACK_2 |
schedule_selector | CC_SCHEDULE_SELECTOR |
menu_selector | CC_MENU_SELECTOR |
CCString | std::string |
setTouchEnabled | 사용되지 않음 |
CCString::createWithFormat | StringUtils::format |
SpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName | SpriteFrameCache::getInstance()->getSpriteFrameByName |
CocosDenshion::SimpleAudioEngine::sharedEngine() | AudioEngine |
void ccTouchesBegan(cocos2d::CCSet* touches, cocos2d::Event* event); | virtual void onTouchesBegan(const std::vector<Touch*>& touches, Event* unused_event) override |
void ccTouchesMoved(cocos2d::CCSet* touches, cocos2d::Event* event); | virtual void onTouchesMoved(const std::vector<Touch*>& touches, Event* unused_event) override; |
void ccTouchesEnded(cocos2d::CCSet* touches, cocos2d::Event* event); | virtual void onTouchesEnded(const std::vector<Touch*>& touches, Event* unused_event) override; |
대부분 CC prefix가 붙은 class 이름들의 CC를 제거해주면 됩니다. 대신 없어진 클래스들이 있기 때문에 이름 바꾸기 할 때 주의 하셔야합니다. CCString 이나 CCArray같은 클래스들은 표준 클래스들을 사용하도록 바꼈으니 잘 확인해서 바꾸시면 됩니다.
※. 참고로 v2.x.x에서 v4.x.x로 바꾸면서 가장 문제되는게 simple audio class가 없어지고 AudioEngine이라는 클래스로 바꿔야 하는데 이건 class 이름만 바꾸는걸로 해결이 안되고 전체적인 로직을 손봐야합니다. 최소한의 코드 수정을 원하신다면 v4보다는 v3.17.2로 마이그레이션 하는것을 추천드립니다.
'Development > Cocos2d-x' 카테고리의 다른 글
[Cocos2d-x] v3.17.2 윈도우에서 한글 깨져서 보일 때 해결 방법 (0) | 2023.03.12 |
---|---|
[COCOS2D-X] 2.x.x 버전으로 개발된 소스코드 최신버젼(4.0.x) 적용하기 Part1 (2) | 2023.03.06 |