gpt4 book ai didi

java - 游戏开发时位图大小超过VM预算

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:18:09 24 4
gpt4 key购买 nike

我正在开发一款安卓游戏,比如塔防。我正在使用表面 View 。我正在使用一些图像作为位图。(Spritesheets、tilesets、按钮、背景、效果对比)现在图像将近 5-6 mb。我在运行游戏时遇到此错误:

Bitmap size exceeds VM budget

19464192-byte external allocation too large for this process.

我这样称呼图像

BitmapFactory.decodeResource(res, id)

然后我把它放到数组中。我无法缩放图像。我正在使用所有图像。我试过了

options.inPurgeable=true;  

它可以工作,但图像加载速度非常慢。我用它加载了一个 spritesheet,当它加载时,我的 fps 非常非常低。

我能做什么?

最佳答案

我也遇到过这个问题;除了减少一次加载的位图的数量/大小之外,真的没有其他解决方案。一些较旧的 Android 设备只为您的整个应用程序分配 16MB 到堆,并且位图在您加载它们后存储在未压缩的内存中,因此在大背景等情况下不难超过 16MB(854x480,32 位位图大约1.6MB 未压缩。)

在我的游戏中,我能够通过仅加载我将在当前关卡中使用的位图来绕过它(例如,我有一个背景的单个位图对象,每次更改时都会从资源中重新加载,而不是在内存中维护多个位图。我只维护一个 int 来跟踪我当前加载的资源。)

您的 sprite 表很大,所以我认为您需要减小动画的大小是对的。或者,从资源加载相当快,因此您可以做一些事情,例如只加载角色当前方向的动画条,并在他转身时让他稍作停顿,同时用新的动画条替换它。不过,这可能会变得复杂。

此外,我强烈建议您在模拟器上测试您的应用程序,并将 VM 堆设置为 16mb,以确保您已解决所有设备的问题。 (模拟器通常默认为 24​​mb,因此很容易未经测试并在发布后生成一些 1 星评论。)

关于java - 游戏开发时位图大小超过VM预算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9959384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com