問題系列:Cocoscreator loader預製體後例項化中有些圖片不顯示
問題描述就是: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 基本只會例項化一次,就會導致節點建立速度變慢。新版本預設採用“自動調整”以後,很好的解決了這個問題。
因為走的是“優化多次建立效能”模式,所以渲染就只會渲染一次,只要不清掉之後都是複用。