我有超过一千个 16 x 16 像素图块图像的大量集合,我在 Java 中制作的游戏需要这些图像。
在不耗尽 JVM 可用内存的情况下存储切片的最佳方法是什么?
我认为生成 1000+ BufferedImages 可能并不明智......
保持图像准备就绪的主要目的是加载地图,该地图将根据地图文件动态生成。
首先,加载所有这些图像确实是一个问题。 1000 张 16 x 16 像素的图像是 256000 像素。即使每个像素使用 4 个字节,也只会产生 1 MB 的图像数据,这也不算多。
如果您确实希望/需要减少加载到内存中的图像数量,则只能将地图所需的视觉图块/图像加载到内存中,以及更多一些以提高游戏的响应速度。
例如,如果您的游戏显示以下地图n
by m
瓷砖,你可以加载一个n+2
by m+2
将图块放入内存中,或以视觉方式表示(其中 * 是可见图块,+ 是额外加载到内存中的图块):
+++++++++++
+*********+
+*********+
+*********+
+++++++++++
当用户移动地图时,您可以删除对不再需要的图块的引用并开始加载新图块。由于内存中保留了一块图块,因此移动地图应该仍然会非常顺利。当然,如果您的图块相当小,或者移动地图的速度非常快,您可以增加使用的额外图块数量
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)