我正在使用SpriteWidget框架(https://github.com/spritewidget/spritewidget)开发游戏,并且需要管理很多资产。由于我使用的图像资产数量略有增加,因此在游戏过程中出现了随机崩溃。 请注意,加载图片资源后,游戏不会崩溃。我可以玩一个关卡,但是当我重新启动另一个关卡时,我遇到了崩溃。 自从我开始开发直到昨天添加新的关卡背景和角色精灵之后,一切都很好。
使用spritewidget框架是否有管理资产图片的好模式? -我尝试在应用程序启动时使用ImageMap类加载所有内容 -我尝试在应用程序启动时使用ImageMap类加载很少的资产,并在每个级别的开始为特定级别的资产创建一个新的ImageMap(并尝试在末尾处置由ImageMap处理的图像)。 但是使用这两种方法,当我玩两个或两个以上的游戏时我会崩溃
在此先感谢您的帮助 最好的问候,
答案 0 :(得分:0)
使用spritewidget管理资产图片是否有很好的模式 框架
获取TexturePacker工具,将所有图像打包为4096x4096张(如果定位到较旧的设备,则为2048x)。结果,您将获得一个包含所有较小图像的图像和一个.json
描述符。
将两者都馈送到new SpriteSheet(img,json)
。通过工作表的原始名称访问图像。这种方法可以大大减少渲染周期内的纹理切换。如果仍然遇到任何崩溃,请尝试使用较小尺寸的纸张。这是任何游戏引擎的常见做法。
以下是SpriteWidget的文档的引文:
最常见的节点类型是Sprite节点。一个精灵只会画一个 图像到屏幕上。可以从Image对象或 SpriteTexture对象。纹理是图像的一部分。用一个 SpriteSheet,您可以在单个包装中包装多个纹理元素 图片。这样可以节省设备的GPU内存中的空间,还可以 绘图速度更快。目前SpriteWidget支持JSON中的Sprite工作表 格式并使用诸如TexturePacker之类的工具制作。很少见 手动编辑Sprite工作表文件。您可以创建一个SpriteSheet 带有json中的定义和图片:
SpriteSheet sprites = new SpriteSheet(myImage, jsonCode); SpriteTexture texture = sprites['texture.png'];