我是一名新手游戏开发者,想要开发一款手机游戏。我正在尝试在libgdx中制作一个复杂的动画,其中包含近300张图片(每张655×1160像素,总大小为42MB)。textureAtlas图像有多大或可以容纳多少张图片?如果同时渲染7个动画,其中2个像这个激活技能一样复杂,而其他的只是简单的角色移动,会有问题吗?
纹理集的大小可以与您的RAM一样大。您拥有的RAM越多,可以加载的纹理集就越大。
在Android上,您可能会遇到加载42 MB大图像的问题,因为这是一次性分配的很多内存。关于这个问题,在Stack Overflow上已经有了多篇文章。您只需要尝试加载它并查看发生了什么。如果游戏崩溃并出现OutOfMemoryException,则必须使其变小。
因为Android是一个硬件差异很大的平台(有些设备总共只有512 MB RAM,而其他设备则有6 GB),所以没有“硬限制”可以基于平台加载多少内容。这取决于设备和可用的RAM(空闲RAM)免责声明:此答案已过时,不再代表实际的RAM分布。随着某些手机拥有高达16 GB的RAM,大多数旗舰手机至少拥有4 GB,42 MB不应该(现实中)再是一个问题。Android RAM分配仍然是存在的最奇怪的系统之一,足够大的位图可能会单独引发异常。在这种情况下,位图确实意味着通过“常规”android中的Bitmap类,而不是直接使用OpenGL和/或LibGDX。
纹理集实际包含的内容(30个图像的复杂动画与2个大图像)并不重要。只要您加载它(并成功将其管理到内存中,而不会导致游戏崩溃),就不会出现渲染问题。帧速率可能会下降(取决于硬件和实际渲染量),但除非您一次渲染数千张图片,否则不应该有问题。
在清单中添加android:largeHeap="true"
也是有帮助的。