我目前正在与其他几个人合作开展2D Top-Down RPG项目。在这一点上,我刚刚实现了在与地图边界(上,下,左,右)碰撞时切换地图的能力。但是,我相当肯定,目前,当你切换地图时,它只是将旧的地图保留在内存中,我认为随着世界变大,可能会导致内存问题。
public int setMap(int map)
{
currentMap = map;
tiledMap = MyGdxGame.getAssetManager().get(Integer.toString(currentMap) + ".tmx");
tiledMapRenderer = new OrthogonalTiledMapRenderer(tiledMap);
return currentMap;
}
我要做的是确保切换到新映射后,前一个映射在内存中仍然不存在。我认为对前一个映射使用dispose()方法将是解决方案,但它抛出了溢出错误。任何意见都将不胜感激,谢谢!
答案 0 :(得分:1)
您可以在平铺地图上使用.dispose
。这将处理此映射使用的所有资源。其他东西最终将由GC收集。试试下面的例子。
public int setMap(int map)
{
currentMap.dispose(); // Dispose your map first
currentMap = map;
tiledMap = MyGdxGame.getAssetManager().get(Integer.toString(currentMap) + ".tmx");
tiledMapRenderer = new OrthogonalTiledMapRenderer(tiledMap);
return currentMap;
}
我从未真正在LibGDX中使用了tilesmap对象,因为我宁愿自己滚动,所以这可能无法按预期工作。请注意以下事项: