cocos2d-x技术群新群:117871561
c++技术交流群:593010226
精灵的性能优化可以使用精灵表(Sprite Sheet)和缓存来实现
个人觉得缓存实现比较简单实用,所以通常会用缓存来优化
1,精灵表也有程序员叫他大图,就是把许多的精灵图片组合到一张大图中,然后通过读plist文件将大图里的小图缓存到内存。(可以用texturepacker将许多图片打包在一张图里,生成一张大图和一个plist文件,但是在游戏开发中最好不要打包特别大的图,比如背景图,否则打包的资源可能会超出硬件设备对纹理最大尺寸的限制)
优点:
(1)减少文件读取次数,读取一张图比读取许多张图 快
(2)减少OpenGL ES绘制调用并且加速渲染
(3)减少内存消耗
--用cc.SpriteFrameCache:getInstance():addSpriteFrames创建精灵缓存帧对象,参数是文件路径
cc.SpriteFrameCache:getInstance():addSpriteFrames(GameViewLayer.RES_PATH .. "game/ZuoBi.plist")
--用缓存起来精灵帧名字创建精灵(所有的缓存帧名字不能有相同的 不然会出现非正常结果)
local sp_zuobi = cc.Sprite:createWithSpriteFrameName("xxx.png")
--退出时移除缓存的作弊精灵帧,避免再有相同名称的精灵帧造成意想不到的问题
cc.SpriteFrameCache:getInstance():removeSpriteFramesFromFile(GameViewLayer.SRC.."game_res/ZuoBi.plist")
--在写程序时最好在退出场景时移除没有用到的纹理和精灵帧
cc.Director:getInstance():getTextureCache():removeUnusedTextures()
cc.SpriteFrameCache:getInstance():removeUnusedSpriteFrames()
--