问题描述就是:cc.loader.loadRes('/prefab/lobby', (err, resource)=>{
if(err){ return; }
this.newnode = cc.instance(resource);
this.node.addChild(this.newnode);
});
这样加载后显示预制体里面偶尔,图片会显示不全;当我this.newnode.destroy()后,再次执行上面的加载代码,那张图片依旧显示不全。
分析原因:
这样加载后显示预制体里面偶尔,图片会显示不全;猜想:可能是渲染机制造成的 ,解决方法就是暂时延迟一秒再渲染吧。
我很奇怪的是一次渲染不成功为什么我关闭再打开那张图片还是不成功,通过看官方文档了解到:
我用的CocosCreator引擎版本是1.9.3
在官方文档中这样说道:
在 v1.10.0 中加入了“优化策略”选项,能优化所选预置的实例化时间,也就是执行 cc.instantiate 所需的时间。可设置的值有:
自动调整(默认):
设为这个选项后,引擎将根据创建次数自动调整优化策略。初次创建实例时,等同于“优化单次创建性能”,多次创建后将自动“优化多次创建性能”。
优化单次创建性能:
该选项会跳过针对这个 prefab 的代码生成优化操作。
优化多次创建性能:
该选项会启用针对这个 prefab 的代码生成优化操作。
如果这个预置需要反复执行 cc.instantiate,请选择“优化多次创建性能”,否则保持默认的“自动调整”即可。
在旧版本引擎中,优化方式固定为“优化多次创建性能”,在需要批量创建对象的场合中效果拔群。但是有不少人将 prefab 作为多人协作或者分步加载的工具,这些 prefab 基本只会实例化一次,就会导致节点创建速度变慢。新版本默认采用“自动调整”以后,很好的解决了这个问题。
因为走的是“优化多次创建性能”模式,所以渲染就只会渲染一次,只要不清掉之后都是复用。