关闭帖子,感谢热心的朋友帮忙
帖子不能为空
第一 检查手机是否发烫
第二 检查代码是不是符合设计逻辑
第三 检查内存是否有泄漏
用的6s测的,手机发烫还好,能接受,连着XCODE,内存也比较稳定,至于代码设计逻辑应该问题不大。
鱼和子弹都是可回收设计,跑完路径或者被捕,都会重置状态,下次新创建的时候直接拿过来用。
检查下你的 全部update方法 调度的时间。。 是不是过快 或者几个时间器同时调用了。。
子弹的update方法持续在浮点运算,就是计算下一个坐标点,用的三角函数。
鱼的update方法里持续乘法运算,也是计算下个坐标点,这些坐标点都是已经写死在数组里,update里面只是计算其索引值。
其他地方update没有使用。
好奇问问 你子弹反射 角度 和反射endpoint是怎么算的。
会不会你没有收回对象 ,只是你肉眼看不见啊 比如你用什么来检查鱼和子弹的碰撞的?
那你这个可能是由高温引起的手机降频导致帧数下降了 你说的还好 手机是多少度??
子弹的运行跟角度息息相关,反射就是改变它的角度,这个角度是随机的,比如撞上上面的边缘,就随机改变该子弹的角度为30-150.
我每隔60秒会打印一下当前鱼和子弹节点里所有的子节点数量,这个数量还是很稳定的,不存在没有回收对象。
鱼和子弹都加上碰撞体,检测就用onCollisionEnter方法,只是我只用子弹去检测碰撞鱼,鱼不做碰撞检测。
子弹碰到鱼就撒网,然后回收,然后调用鱼里面的方法去做碰撞处理。
我估计可能是子弹的浮点运算导致的掉帧,我刚把子弹update方法里的浮点运算关闭后,已经运行10多分钟了,帧数保持的还是很稳定,55左右。
问题原因已找到,也已经解决了,非常感谢 @17150252 @1466477769 两位的热心帮助。
附上解决方案:子弹的角度不是每帧都会发生变化的,之前在update里每帧都是去使用this.speed * Math.sin(this.nowRotation / 180 * Math.PI)和 this.speed * Math.cos(this.nowRotation / 180 * Math.PI)计算下个坐标点,过多的浮点运算是掉帧的主要原因。
现在在初始化的时候先根据角度把三角函数值计算出来,然后直接使用这个值,如果子弹角度有所改变再去计算一次。
我想请教一下, 你的鱼怎么做到同步的?比如游戏中有一个玩家A进来,130多条鱼,玩家A怎么知道所有鱼的位置 !?
鱼的所有路径都是提前写好的,我这个是把每个路径大概100个坐标点放在一个数组里。服务端告诉用哪个路径,然后路径的总耗时和已耗时也告诉客户端,根据已耗时和总耗时 就能计算出当前鱼处于路径的哪个点。
有问题请教你。有联络方式吗?
什么问题?
延迟你怎么处理哦 (比如说你出鱼)
大佬 怎么解决掉帧的