【问题标题】:Altering tmx tiles in andengine在andengine中更改tmx图块
【发布时间】:2013-03-29 02:22:25
【问题描述】:

我一直在使用this technique 来更改我们游戏中的图块,但我注意到当同时更改许多图块时性能损失相当大。我正在使用该技术为 TMX 地图上的图块设置动画。我想知道是否有人注意到使用该方法更改 tmx 磁贴的任何性能问题?有没有更有效的方法来改变 TMX Tiles?

为了避免性能损失,我能想到的唯一其他选择是将动画精灵附加到 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 分支

【问题讨论】:

    标签: android performance tmx


    【解决方案1】:

    我不确定你是否可以使用它,但我需要类似的东西。我的 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);
    }
    

    我将所有开/关对象放到特殊对象层(使用平铺编辑器)。当然,tileset 必须组织起来,使 on 和 off 帧是按顺序排列的。

    然后,当我创建地图时,我会遍历这些对象并创建平铺的精灵。我将它保存到一个特殊的列表中以供以后检索。当然,从一个切换到另一个就像使用 setCurrentTileIndex() 一样简单

    【讨论】:

    • 我最终做了类似的事情。谢谢!
    猜你喜欢
    • 2015-12-01
    • 2012-08-18
    • 2014-10-03
    • 1970-01-01
    • 2013-01-07
    • 2012-10-29
    • 2013-06-03
    • 2014-06-11
    • 2014-12-21
    相关资源
    最近更新 更多