Egret社区

个人之egret性能优化

2014-11-5 12:20
959530
本题已加入常见问题汇总 » 性能优化最佳实践,更多性能优化最佳实践相关的话题欢迎关注讨论


无图无真相,游戏还没有上线,只能放些图片 S41105-113614.jpg S41105-113725.jpg

先贴下大神教程http://bbs.egret-labs.org/forum. ... =%E6%80%A7%E8%83%BD



以下观点都是个人观点或者经验,egret是本人接触的第一个游戏引擎,如果有不对或者不正确的地方,请各位大侠指出,免得误人子弟

1.对象引用类型(对象,数组,枚举)
  对象引用,在不使用的时候尽量手动释放;做到尽可能的内存回收,在512内存的手机上面,还是需要考虑的
  在egret中,直接removeChild 不知道会不会自动回收,本人没有做过测试,一直都尽可能的手动释放,让内存回收
2.定时器的使用(egret.Time)
  同1,使用的结束的时候,先停掉定时器,调用timeobj.pause();然后手动回收
3.事件监听和移除(addEventLisenter&removeEventListener)
  同1,事件不使用的时候,也手动移除.目测事件监听addEventListener,猜测也是封装的定时器,不停的回调
4.touchEnabled
  touchEnabled是个大问题,这个猜测需要详细了解egret中的事件机制;
        先给出个人的一些解决方案,cocos2dx中的场景分层额,把需要用到touchEnabled 的容器对象,放到一个容器中,暂且叫touchSprite,放到场景的最上一层,也就是在一个场景中,把其他元素对象放到场景后,把touchSprite容器最后加入到场景中,即parentSprite.addChildAt(touchSprite,parentSprite.numChildren)

        为什么要这样做额?因为之前做一个稍微大点的游戏,一个Sprite中包含了大概100多个子容器,其中只有一个元素,需要监听touch事件;不触摸的时候,微信内置浏览器能跑到40以上,但是一触摸就直接掉到了10以上,各种排除,最后找官方询问,官方说需要touch的时候需要检查碰撞,大量消耗性能,猜想应该是遍历Sprite中的所有子对象,找到需要touch事件的对象,想想那是非常吓人的,最后做了调整,就是上面提出的解决方案,
       今天突然想到之前用原生js在canvas上面绘制做游戏检测触摸点的问题,当时查了一些资料,发现,canvas上面检测触摸点,都是重新绘制,不停的遍历检测的,检测你点击的是哪个点。我想egret估计也是这样做的吧,把touch层尽可能的放到最上面,减少遍历时间,碰撞检测。
       欢迎各位大侠拍砖,本人刚入行三个月,很多不懂,请大家多多指点,感谢
        检测流程应该也是跟事件机制流程有关系的,本人不是很懂,之前用官方的例子,测试让我有些不理解,
一个子容器,设置touchEnabled = true; 父容器addEventListener(egret.TouchEvent.TOUCH_TAB,this.dealEvent,this);输出的监听对象是子容器,想问为什么不是父容器?
http://docs.egret-labs.org/demo/touchevent.html


分享到 :
9 人收藏
一天一小步,十天一大步。个人博客http://www.xsstomy.com/

30 个回复

倒序浏览
change  斑竹 | 2014-11-5 12:44:41
期待你的游戏上线,写得很专业,学习了,我特来顶贴!
dukov  登堂入室 | 2014-11-5 12:55:54
游戏很炫,赞一个。为什么主角脚下没有云?
xsstomy  斑竹 | 2014-11-5 13:36:06
change 发表于 2014-11-5 12:44
期待你的游戏上线,写得很专业,学习了,我特来顶贴!

共同学习
xsstomy  斑竹 | 2014-11-5 13:36:41
dukov 发表于 2014-11-5 12:55
游戏很炫,赞一个。为什么主角脚下没有云?

这个回头跟美术说说,感谢意见
egret-Jerry  官方团队 | 2014-11-5 16:51:42
期待你的游戏上线,继续优化优化应该是可以到达60帧的
龍劍  登堂入室 | 2014-11-5 18:11:09
toucheable 那里学习了!
xsstomy  斑竹 | 2014-11-5 19:25:10
egret-Jerry 发表于 2014-11-5 16:51
期待你的游戏上线,继续优化优化应该是可以到达60帧的

革命尚未成功,仍需继续努力,会继续努力的任务艰巨啊
xsstomy  斑竹 | 2014-11-5 19:25:48
龍劍 发表于 2014-11-5 18:11
toucheable 那里学习了!

有帮助就好了,一起学习
ice_leader  圆转纯熟 | 2014-11-6 10:08:49
哈哈 我也正在做机战类的游戏demo 以后请多多指教哈~!另外..看你的cost..不会很卡么
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号

Powered by Discuz! X3.2 © 2001-2019 Comsenz Inc.

返回顶部