你看看本文上边ascii的原理图~ 把设置的一些节点移动到同节点下进行有序排列。。 我都没用过Graphics。。。 无法回答你的问题。。。
组件升级支持多个根节点了。 然后, 待节点路径要写完整的路径了。 这个例子应该写
flowLine/word/bg
flowLine/word/word label
github上的demo更新了~
节点父物体改变,wdige的锚点适配就乱了。。如果是那种同比缩放的适配估计还好
Mark!!
对,这些问题得自行考虑。。 比如父节点destroy了,子节点也要同时处理掉。。。 我现在在想通用的解决方案。。 其实es6支持Proxy类,但是现在用不了。。 typescript中都没支持它。。。
要是这些问题都能解决了,那这个组件算是成熟了 哈哈
想得美。。。 我用了一天时间 终于解决了一个无限文字流点击的小场景。。。
总结下来其实不复杂:
- 需要优化子节点的节点,需要把子节点用属性引用的方式一只持有被优化节点的对象句柄
export default class Word extends cc.Component {
@property(cc.Sprite)
bg: cc.Sprite = null
@property(cc.Label)
label: cc.Label = null
- 节点在销毁或重用时,需要对被优化节点做处理(销毁同步销毁,重用把子节点先拿回来,设定好位置等,再优化一遍)
// 被优化节点的父节点用对象池的情况
export default class Word extends cc.Component {
unuse() {
this.label.enabled = false
this.bg.enabled = false
this.correct = false
// 拿回来,确定位置,再执行优化(外层添加新节点的时候会执行一次优化)
this.label.node.parent = this.node
this.bg.node.parent = this.node
this.label.node.position = cc.Vec2.ZERO
this.bg.node.position = cc.Vec2.ZERO
}
reuse() {
// draw call优化后,导致节点分离,要重置下状态
this.label.enabled = true
this.bg.enabled = true
}
}
关于对象复用的时候,计算子节点位置的时候,我纠结了半天,如果直接算,会出很多时序上的问题,很坑。
所以,用这种直接拿回来的方式,再好不过了~
大家的项目draw call一般是跑到多少?我这边普通的安卓机50多draw call感觉有点卡顿
Frame time(ms) 10.2
Framerate (FPS) 58~60
Draw call 58
Game Logic(ms) 0.5
Renderer(ms) 9.7
这样正常吗?在微信小游戏普通安卓机,老感觉runAction会有点卡顿,特别是spine动画+action
draw call 14 ios还能感觉到卡顿呢。。 卡不卡不一定是draw call引起的。。。我今天碰到的问题是对象池内节点回收没清理绑定的监听操作。用各种方法都没查到原因,还是点击后有多条log发现的。。。
记得以前有一个牛逼的贴子是教怎么查看性能瓶颈的。。。可以论坛里搜一下~
mark
双击666
多谢分享
这个实际运用还是比较局限的吧,某些情况下用还不错
好的谢谢,我找找看
按我理解,如果需要把相同的node抽出来做合批,那用这个就合适。没必要再写一遍。所以,我做成了通用组件。
无论用这个组件做抽离或者自行抽离,都要自行处理抽出来节点跟原父节点之间的联系。。避免不了~
mark
mark
mack