我正在通过教程学习Libgdx,每次看到时,都使用相同的实例或变量来输出精灵对象。所以,我可以理解,如果我们想要创建和渲染相同的图像或精灵,我们可以简单地使用相同的变量。但是现在,我需要显示几个对象(不同的玩家/图像)。我仍然可以使用相同的变量来输出它们,还是应该为每个变量创建变量?因为我看到它节省了空间和记忆。要输出精灵我使用SpriteBatch,Texture,Sprite和TextureRegion(用于移动精灵)对象。
答案 0 :(得分:1)
不,你不能为不同的实体(玩家等)使用相同的精灵对象这不是你将节省内存的地方。创建Sprite对象不是重量级操作。
你可以节省内存的是纹理。您应该尽可能重用Textures。每次创建新Sprite时都不想加载新的Textures。让我们说有一张代表玩家的图像,你不应该一次又一次地创建那个图像。您应该使用AssetLoader在内存中加载一次,然后重新使用它。
如果您有多个小尺寸的纹理,那么您应该使用libgdx的纹理打包器将它们打包成单个图像,因为加载多个小纹理不是一个好主意,而是加载更大的纹理表是好的,因为绑定纹理是一项昂贵的操作。请阅读此Texture Atlas以获取更多详细信息。
一旦你不需要纹理,你应该处理它们。
阅读本页Memory Management in Libgdx,了解有关许多Libgdx类实现的Disposable接口的更多信息。
我也觉得你正试图过早地优化你的游戏。在这么早的阶段,不要担心对象创造。还记得一件事 - 过早优化是万恶之源。