Iphone Cocos2d:TileMap:如何最小化TileMap的内存使用

Iphone Cocos2d:TileMap:如何最小化TileMap的内存使用,iphone,cocos2d-iphone,Iphone,Cocos2d Iphone,我正在使用CCTMXTiledMap来提取层的Init函数中不同位置的对象的属性。我将这些位置存储在一个单独的数组中,不再需要TileMap 代码如下: -(void) init{ ... CCTMXTiledMap *tileMap = [CCTMXTiledMap tiledMapWithTMXFile:@"TileMap2.tmx"]; CCTMXLayer *tmxLayer= [tileMap layerNamed:@"Layer1"]; for(int i=0;i<9999;

我正在使用CCTMXTiledMap来提取层的Init函数中不同位置的对象的属性。我将这些位置存储在一个单独的数组中,不再需要TileMap

代码如下:

-(void) init{
...
CCTMXTiledMap *tileMap = [CCTMXTiledMap tiledMapWithTMXFile:@"TileMap2.tmx"];
CCTMXLayer *tmxLayer= [tileMap layerNamed:@"Layer1"]; 
for(int i=0;i<9999;i++)
    {
        for(int j=0;j<20;j++)
        {
            int gid = [tmxLayer tileGIDAt:ccp(i,j)];
            properties = [tileMap propertiesForGID:gid];
            _obstacles[m].type = CUBE_; m++;
        }
     }
...
}
-(void)init{
...
CCTMXTiledMap*tileMap=[CCTMXTiledMap tiledmap withtmxfile:@“TileMap2.tmx”];
CCTMXLayer*tmxLayer=[tileMap layername:@“Layer1”];

对于(int i=0;i,每个磁贴消耗(大约)100字节到500字节的内存。如果cocos2d必须为磁贴创建CCSprite,例如,如果您设置了任何CCSprite属性,如比例、颜色或对磁贴运行操作,则会出现后者

9999x20意味着您有近200000个磁贴。乘以100字节,大约有19MB。因此,您只需获得预期的结果


如果你想减少内存使用,你必须使用不同的实现(是一个竞争者)或者你自己的实现。

解决了。我将我的长tilemap分解为3个小tilemap。