CocosBuilder 2.0 rc2에서 3.0 alpha로 Migration
지난 포스팅에서 cocos2d-x 2.0.1에서 2.1.0으로 마이그레이션 하면서 코코스빌더쪽에서 문제가 발생했었죠.
WARNING! Incompatible ccbi file version (file: 2 reader: 4)
위와 같은 로그와 함께말이죠. 일단 위 로그 해결은 간단히 최신 코코스빌더에서 기존에 작업했던 CCB Project를 로딩 후 Purblish만 한번 해주면 해결은 됩니다. 그외 런타임에러가 발생한 것을 정리해봅니다.
이미지 파일 파싱 오류
Get data from file(title.png) failed!가 발생했습니다.
소스를보면 spriteFile를 최종적으로 만드는데 있어서 pCCBReader->getCCBRootPath()를 사용합니다.
WARNING! Incompatible ccbi file version (file: 2 reader: 4)
위와 같은 로그와 함께말이죠. 일단 위 로그 해결은 간단히 최신 코코스빌더에서 기존에 작업했던 CCB Project를 로딩 후 Purblish만 한번 해주면 해결은 됩니다. 그외 런타임에러가 발생한 것을 정리해봅니다.
이미지 파일 파싱 오류
Get data from file(title.png) failed!가 발생했습니다.
소스를보면 spriteFile를 최종적으로 만드는데 있어서 pCCBReader->getCCBRootPath()를 사용합니다.
CCBReader* pCCB Reader = new CCBReader( pNodeLoaderLibrary ); pCCBReader->autorelease(); ///< ccb 리소스가 있는 루트 디렉터리를 설정한다. pCCBReader->setCCBRootPath( "ccb/" );
위와같이 setCCBRootPath를 추가해서 해결합니다.
CCB 내부에 자식으로 CCB를 가지고 있을 때 파싱 오류
위와같이 스테이지 선택 관련 CCB 처리중에 Get data from file(xxx.plist) failed! 오류가 뜨더군요. 계속진행해봐야 잘못된 포인터에 걸립니다.
호출스택입니다. CCB 내부에서 또다른 CCB 파일을 자식으로 처리할 때 생긴 에러입니다. CCNodeLoader::parseProperties 할때 kCCBPropTypeCCBFile 이면 파싱중에 CCBReader의 새로운 인스턴스를 만들게 됩니다.
이렇게 말이죠. 이 과정에서 CCBRootPath가 설정되지 않아서 오류가 발생했습니다. 기존 리더인 pCCBReader로부터 가져오도록 아래와 같이 추가해줍니다.
위 런타임 오류들이 마이그레이션할 때만 발생하는지 아니면 코코스빌더 3.0 알파만 가지고 처음부터 만들어도 이러는지는 모르겠네요. 전자라면 좋겠지만, 만약 후자라면 cocos2d-x 쪽 CCB관련 버그거나 CocosBuilder쪽에 아직 버그가 있겠죠.
이렇게해서 런타임 에러는 해결했습니다. 하지만 좌표문제가 발생하네요. 일단 여기서 마무리합니다.
CCB 내부에 자식으로 CCB를 가지고 있을 때 파싱 오류
위와같이 스테이지 선택 관련 CCB 처리중에 Get data from file(xxx.plist) failed! 오류가 뜨더군요. 계속진행해봐야 잘못된 포인터에 걸립니다.
호출스택입니다. CCB 내부에서 또다른 CCB 파일을 자식으로 처리할 때 생긴 에러입니다. CCNodeLoader::parseProperties 할때 kCCBPropTypeCCBFile 이면 파싱중에 CCBReader의 새로운 인스턴스를 만들게 됩니다.
이렇게 말이죠. 이 과정에서 CCBRootPath가 설정되지 않아서 오류가 발생했습니다. 기존 리더인 pCCBReader로부터 가져오도록 아래와 같이 추가해줍니다.
ccbReader->setCCBRootPath( pCCBReader->getCCBRootPath().c_str() );
위 런타임 오류들이 마이그레이션할 때만 발생하는지 아니면 코코스빌더 3.0 알파만 가지고 처음부터 만들어도 이러는지는 모르겠네요. 전자라면 좋겠지만, 만약 후자라면 cocos2d-x 쪽 CCB관련 버그거나 CocosBuilder쪽에 아직 버그가 있겠죠.
이렇게해서 런타임 에러는 해결했습니다. 하지만 좌표문제가 발생하네요. 일단 여기서 마무리합니다.
댓글
댓글 쓰기