У меня 5 плиток.Каждый размером 16x16 пикселей, размером 8 КБ.Они все загружены с использованием imageNamed.Например, [UIImage imageNamed: @ "dirt.png"].Они загружаются вне drawRect, в init.У меня есть массив под названием «карта», который отображает, где эти плитки идут.В DrawRect у меня есть немного кода, который визуализирует сцену, используя два цикла for, как показано ниже.
tileNum = startPoint;
for(int i = 0; i< stageHeight; i++){
for(int ii = 0; ii< stageWidth; ii++){
if(map[tileNum] == 0){
[dirt drawInRect:CGRectMake(ii*tileSize, i*tileSize, tileSize, tileSize)];
}else if(map[tileNum] ==1){
[tree1 drawInRect:CGRectMake(ii*tileSize, i*tileSize, tileSize, tileSize)];
}else if(map[tileNum] ==2){
[tree2 drawInRect:CGRectMake(ii*tileSize, i*tileSize, tileSize, tileSize)];
}else if(map[tileNum] ==3){
[tree3 drawInRect:CGRectMake(ii*tileSize, i*tileSize, tileSize, tileSize)];
}else if(map[tileNum] ==4){
[tree4 drawInRect:CGRectMake(ii*tileSize, i*tileSize, tileSize, tileSize)];
}
tileNum++;
}
tileNum += (mapWidth - stageWidth);
}
В симуляторе все работает великолепно, как я и хочу.Но когда я вставляю устройство (3GS), частота кадров замедляется до ползания (около 1 кадра в секунду).Я подозреваю, что это может быть связано с использованием imageNamed.Или это только потому, что я рендерил слишком много плиток?(В 16x16 я рендерил 600 плиток на кадр, но это крошечные файлы, и 90% нарисованных плиток - это плитка грязи).И если да, то как лучше создать простой движок плиток?
Это моя первая попытка опубликовать вопрос.Спасибо всем, кто помогает.