在用CocosCreator做項目的時候,如果項目過大,資源很多,然後,現在我們假設我們這樣設計架構:
1、打開一個界面(預製體)的時候,有關這個預製體的圖片資源也用cc.loader加載進來;
2、關閉這個界面的時候,把有關的圖片用cc.loader.release釋放,如果是公共資源就不釋放;
3、換場景的時候我們選擇自動釋放資源。
上面是一個項目資源過多的項目的架構設計的其中一種方法。
但是上面的方法在CocosCreator中有一點漏洞:這個漏洞就是如果有用cc.loader.loadRes加載了一個預製體,然後切換了場景,再回到這個場景,然後再次loadRes該預製體的時候,你會發現,這個預製體的圖片都顯示成黑塊了。
造成這個問題的原因是:
用cc.loader.loadRes加載了預製體之後,預製體會一直存在內存中,切換場景之後,所以圖片資源釋放;
再切回原場景,再用cc.loader.loadRes加載預製體,此時,用的是內存中存放着的預製體;
但是此時,預製體引用的圖片資源已經釋放,所以是黑塊。
根據網友的問題增加的回答:
我們在切換場景時,圖片資源釋放了,而預製體資源是通過cc.loader.loadRes動態加載的,就不會釋放;
所以我們應該在切換場景時,把cc.loader.loadRes加載的預製體釋放掉。