2012-06-01 3 views
2

큰 세계와 함께 cocos2d 게임을 디자인하려고합니다. wolrd 기와지도는 매우 크고, 어쩌면 20 ipad 화면 크기입니다. 화면에 CCTMXTiledMap을로드하는 방법을 알고 싶습니다. 직접 화면에 추가하면 너무 많은 메모리가 사용됩니까? 그렇다면이 문제를 해결할 수있는 해결책이 있습니까?cocos2d에서 큰 크기의 CCTMXTiledMap을로드하는 방법은 무엇입니까?

+0

"게임 개발"포럼이 도움이 될 것 같네요. – doNotCheckMyBlog

답변

1

타일 맵의 메모리 사용량은 타일 크기와 타일을 얼마나 스프라이트로 변환해야하는지 (예 : 애니메이션을 실행하려는 경우)에 따라 다릅니다.

타일의 크기가 32x32 픽셀이라고 가정합니다. 20 배 iPad 치수는 20.480x15.360 점을 의미합니다. 32로 나누면 640x480 타일 또는 총 307.200 타일의 타일 크기를 나타냅니다. 각 타일이 64 바이트 메모리를 사용한다고 가정하면 (오래된 cocos2d 버전에서는 64 바이트보다 작습니다) 거의 19MB의 메모리를 사용하여 맵이 완성됩니다. 텍스처조차 계산하지 않습니다.

이제는 스프라이트 속성 중 하나를 변경하거나 액션을 실행하여 CCSprite 인터페이스를 통해 주소를 지정하는 모든 타일에 대해 cocos2d는 해당 타일을 일반 CCSprite로 변환합니다. 마지막으로 체크 한 각 CCSprite 객체는 약 420 바이트를 사용합니다. 따라서 각 타일의 색상 속성을 변경하여 모든 타일을 CCSprite 객체로 변환하는 경우 타일 맵은 123MB의 메모리를 사용합니다. 다시 말하지만, 텍스처는 포함하지 않습니다.

Tilemap renderer in KoboldTouch을 사용해보세요. 매우 큰 타일 맵 (수백만 개의 타일, 즉 4000x4000 타일)을 처리 할 수 ​​있으며 60fps로 렌더링합니다.

0

타일을 모두로드하려고하면 메모리가 너무 많이 차지하게됩니다.

CCTMXTilesMap에 대한이 자습서를 살펴보십시오.

+0

전에이 튜토리얼을 읽었습니다. 그러나 그것은 나의 질문에 관한 memtion을하지 않았다. 매우 큰 CCTMXTilesMap은 화면에 추가 한 후에 너무 많은 메모리를 차지하게됩니다. 문제를 해결하기위한 솔루션은 무엇입니까? – qichunren

+0

@qichunren 이는 TMX 맵을 사용하는 것 외에 다른 것을 찾아야한다는 것을 의미합니다. – samfisher

관련 문제