2013-04-06 90 views
2

我一直在使用this technique來更改我們遊戲中的瓷磚,但是當許多瓷磚一次更改時,我一直注意到性能的相當大的損失。我正在使用該技術爲TMX地圖上的貼圖進行動畫處理。我想知道是否有人注意到使用該方法更改tmx磁貼的任何性能問題?有沒有更有效的方法來改變TMX瓷磚?在引導中更改tmx瓷磚

爲了解決性能損失問題,我唯一能想到的其他選擇就是將動畫精靈附加到TMX圖層上,但這似乎不是一個理想的解決方案。

任何意見,將不勝感激。

下面是我指的是方法:

mTestTile.setGlobalTileID(mTMXTiledMap, mGloabalIndex); 

//After changing the global ID do this  
final int TileHeight = mTMXTiledMap.getTileHeight(); 
final int TileWidth = mTMXTiledMap.getTileWidth();   
//See TMXLayer Class line 308 (getSpriteBatchIndex) 
lTMXLayer.setIndex(mTestTile.getTileRow() * mTMXTiledMap.getTileColumns() + mTestTile.getTileColumn()); 
lTMXLayer.drawWithoutChecks(mTestTile.getTextureRegion(), mTestTile.getTileX(), mTestTile.getTileY(), lTileWidth, lTileHeight, Color.WHITE_ABGR_PACKED_FLOAT);  
mTMXTiledMap.mTestTMXLayer.submit();[/syntax] 

注:我使用GLES2 Anchor_Center分公司

回答

2

我不知道,如果你可以用這個,但我需要類似的東西。我的TMX地圖中有幾個對象,我想要兩個框架(開/關)。而不是使用地圖層,我用這些對象層。我已經添加了此代碼TMXTileset類:

public ITiledTextureRegion getTiledTextureRegionFromGlobalTileID(final int pGlobalTileID, final int pTiles) { 
    ITextureRegion[] regions = new ITextureRegion[pTiles]; 
    for (int i = 0; i < pTiles; i++) { 
     regions[i] = getTextureRegionFromGlobalTileID(pGlobalTileID + i); 
    } 

    return new TiledTextureRegion(this.mTexture, regions); 
} 

我把所有的開/關對象的特殊對象層(使用瓷磚編輯器)。當然,拼圖必須按照打開和關閉幀的順序排列。

然後,當我創建地圖時,我遍歷這些對象並創建平鋪的精靈。我將它保存到一個特殊列表中供以後檢索。當然,從一個切換到另一個就像使用一樣簡單setCurrentTileIndex()

+0

我最終做了類似的事情。謝謝! – eBehbahani 2013-06-13 16:46:08