java - LibGdx 多个对象的一个​​或多个实例

标签 java object libgdx

我正在通过教程来学习 Libgdx,每次我看到时,都会使用相同的实例或变量来输出 Sprite 对象。所以,我可以理解,如果我们想要创建和渲染相同的图像或 Sprite ,我们可以简单地使用相同的变量。但现在,我需要显示多个对象(不同的玩家/图像)。我仍然可以使用相同的变量来输出它们还是应该为每个变量创建变量?因为我已经看到它节省了空间和内存。为了输出 Sprite ,我使用 SpriteBatch、Texture、Sprite 和 TextureRegion(用于移动 Sprite )对象。

最佳答案

不,你不能对不同的实体(玩家等)使用相同的 Sprite 对象,这不是你节省内存的地方。 Sprite 对象的创建不是重量级操作。

可以节省内存的地方是纹理。您应该尽可能重复使用纹理。您不希望每次创建新的 Sprite 时都加载新的纹理。假设有 1 个图像代表一名玩家,您不应该一次又一次地创建该图像。您应该使用 AssetLoader 将其加载到内存中一次,然后重新使用它。

如果您有多个小尺寸纹理,那么您应该使用 libgdx 的纹理打包程序将它们打包到单个图像中,因为加载多个小纹理不是一个好主意,而是加载更大的纹理表就可以了,因为绑定(bind)纹理是一个昂贵的操作。阅读此Texture Atlas了解更多详细信息。

此外,一旦您不需要纹理,就应该丢弃它们。

阅读此页 Memory Management in Libgdx有关由许多 Libgdx 类实现的 Disposable 接口(interface)的更多信息。

我还觉得您正在过早地尝试优化您的游戏。在这么早的阶段根本不用担心对象的创建。请记住一件事 - 过早的优化是万恶之源。

关于java - LibGdx 多个对象的一个​​或多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42931937/

相关文章:

java - Spring PUT-Request,最好的方法

java - 当传递给需要对象类型的方法时,整数将变为 Long

android-studio - libGDX - 导入到 android studio 的粒子效果工具

java - 如何包含 java src 代码,以便我可以在 Android Studio 中使用它

java - Maven:在项目之间共享源

使用 CircleCI 执行时无法解析 Java 8 导入

java - 在Java中通过txt文件创建对象到数组中

python - 从python中的对象列表中删除对象

java - 表格中的单元格之间是否总是存在自然的 "space"?

java - 为什么 Java 不能在字符串中正确显示 unicode?