最新文章
Cocos2d-x游戏开发实例详解7:对象释放时机
03-25 13:59
Cocos2d-x游戏开发实例详解6:自动释放池
03-25 13:55
Cocos2d-x游戏开发实例详解5:神奇的自动释放
03-25 13:49
Cocos2d-x游戏开发实例详解4:游戏主循环
03-25 13:44
Cocos2d-x游戏开发实例详解3:无限滚动地图
03-25 13:37
Cocos2d-x游戏开发实例详解2:开始菜单续
03-25 13:32
NGUI uiatas内存
在讨论 NGUI uiatas 内存问题时,有一个情况值得关注。这里存在一个目标点 (29, 1.2, 29),程序绘制了 8 个点,并且这些点会依次向目标点靠近。
需要注意的是,如果你的 Monster 和 Hero 之间的距离很短,可能只会存储起始位置,即 length = 1。在我的测试中,这种情况出现得较为频繁,因此我自动将其屏蔽了。
我正在开发一款 2D 且相对简单的游戏,最初打算完全使用 NGUI 来完成,包括游戏内容的实现。这个想法很不错,开发过程也很顺利,游戏在 PC 上运行得很流畅。
然而,当遇到诺基亚的 lumia520 手机时,问题就出现了。这款手机的可用内存为 512M,微软标明单个程序可申请的最大内存为 180M,详细信息可参考:http://msdn.microsoft.com/library/windows/apps/jj681682(v=vs.105).aspx。在开发过程中,最核心的获取路径步骤已经完成,接下来需要判断是否进行更新。
当游戏在 lumia520 上运行时,并没有崩溃,但出现了一些资源无法加载的问题。更直观地说,就是有些图片无法显示,原本绚丽的背景变成了一片灰色。
经过分析发现,无法显示的图片来自较大的图集,例如 2048 * 2048 大小的图集。显然,这是由于程序无法申请到足够的内存所致。不过,NGUI 或 Unity 很“善良”地保证了程序不会崩溃。
为了解决这个问题,我进行了一系列调整,最终使游戏能够较为完美地在 lumia520 上运行。以下是我所做的主要优化措施(仅为个人见解):
- 调整图集大小:尽量将图集大小控制在 512 512 以内,绝对不要超过 1024 1024。
- 合理选择制作方式:对于 UI 部分,使用 NGUI 制作图集;而游戏内容方面,建议采用 Native 2D 的 Sprite。
- 使用双相机区分内容:通过使用两个 Camera 来区分游戏内容和 UI。
- 谨慎使用 NGUI 动画:NGUI 虽然使用方便,但在某些情况下也会带来一些麻烦。例如,在处理动画时,尽量避免使用它的 Sprite Animation,因为它无法自由缩放精灵。相比之下,原生 2D 修改属性会更加便捷。