还在为getComponent和getChildByName烦恼吗?担心每次频繁的遍历消耗太浪费时间?那就来扩展一下我们的cc.Node吧,让你不必为了一长串getChildByName和getComponent而烦恼。使用得当也可以免去每次的遍历消耗(大量节点下).
使用说明
- 获取子节点
- node.child(“xxx”)
- node.child(“xxx/xxx”)
- node.child(“xxx”, true) // true表示获取最新的节点并更新节点缓存
- 获取组件
- node.label 或者 node.sprite 或者 node.button 或者 node.layout … (统一为小写,大写转为下划线加小写)
-
设置自动更新子节点缓存
- node.child_update_b = true; //会监听当前节点所有子节点的移除事件并删除相应缓存
-
清除组件缓存
- node.label = null; 赋值即清除, 下次获取时会自动更新缓存
###备注说明
- 由于内部给所有获取的节点和组件都存储了缓存,所以下次获取是直接拿到缓存中的数据, 如果要更新缓存请看上面说明。
好处: - 分摊性能消耗,只在使用的第一次遍历获取,之后都是获取的缓存(可以手动/自动更新缓存)
- 简化接口,不必写一长串的getComponent/getChildByName, 怎么方便怎么来
-> 接下来看看扩展方式
- 将NodeS扩展.txt中的内容复制到creator.d.ts的Node类中(位置随意, 注意不要覆盖其他接口)
、 - 将nodes.ts脚本拖入项目中并置顶(提示:脚本和文件夹排列顺序默认是按照字母排列)
- 现在就可以随意使用啦;