2015-06-12 48 views
3

我製作了Tiled遊戲。現在,我正在通過增加場景中的節點數來壓力測試手機的功能。有物理基礎的東西,AI運動,天&夜間系統,粒子彈出這裏&有&很多其他的東西在我的場景引擎蓋下進行。我想知道的是,在使用16x16切片時,我現在擁有的是使用32x32切片的性能差異嗎?這些瓷磚基本上只是添加到場景中的圖像;他們沒有任何物理實體或其他任何類型的東西。在製作Tiled地圖時,他們確實具有我設置的屬性,但我認爲這不會對性能產生任何影響。每張地圖有幾層(背景,植被,產卵點,建築物,有時還有幾個)。下面是如何瓦片被渲染爲1這種層的代碼片段:Sprite套件使用16x16瓦片與32x32瓦片渲染性能?

 if([map propertiesForGid:tileGid][@"shrub"]) 
     { 
      SKSpriteNode *tile = [layer tileAtCoord:coord]; 
      tile.name = @"vegShrub"; 
      [self addChild:tile]; 
     } 
     else if([map propertiesForGid:tileGid][@"tree"]) 
     { 
      SKNode *tile = [[Breakable alloc] initWithWhole:[atlas textureNamed:@"tree"] broken:[atlas textureNamed:@"tree-stump"]]; 
      tile.position = [self pointForCoord:coord]; 
      [self addChild:tile]; 
      [layer removeTileAtCoord:coord]; 
     } 

如果我使用32×32瓦超過我目前的16×16瓦,將我莫名其妙地釋放一些內存或「減輕負擔」關閉系統?

+0

它可能不會有什麼區別,因爲你會繪製相同數量的像素(填充率) 。如果你在每一幀中枚舉tile精靈並且​​在渲染循環中效率低下,或者你在每個精靈幀中對每個精靈都做了瘋狂的事情,它可能會有所作爲。 – LearnCocos2D

回答

4

對於貼圖貼圖,每個貼圖通常由SKSpriteNode表示。所以如果你的地圖是320×320,而你使用的是32×32的地圖,那麼你最終會得到100個節點。在相同的地圖尺寸上使用16x16拼貼將會產生400個節點。節點越多,負載越大。

另一方面,您應該考慮讓SKAToolKit解析應用中的平鋪貼圖。它是開源的,免費的,並有大量的內置功能,如自動跟蹤,迷你地圖等...

+1

我認爲你的邏輯很紮實,我同意你的看法。關於你連接的鏈接......聖靈SH * T!這正是我需要的和更多!非常感謝你。 – Krekin

+1

@Krekin - 很高興爲您服務。 – sangony

+2

請注意,雖然「SKATiledMap」實際上也爲每個tile創建了一個「SKSpriteNode」,但這是渲染地圖的一種非常低效的方式。如果您需要更好的性能(並且對Tiled功能提供更全面的支持),您應該嘗試TilemapKit - http://tilemapkit.com/ –