屬性檢查器中的 自動釋放資源和延遲加載

1.前言
https://blog.csdn.net/liujia216/article/details/53215751
1.1.自動釋放資源 - 資源自動釋放策略
如果項目中的場景很多,隨着新場景的切換,內存佔用就會不斷上升,很喫內存。
除了使用 cc.loader.release等API來精確釋放不使用的資源,我們還可以使
用場景的自動釋放功能。要配置自動釋放,可以在 資源管理器 中選中所需場景,
然後在屬性檢查器 中設置“自動釋放資源”選項,該項功能是默認關閉的。

從當前場景切換到下一個場景時,如果當前場景不自動釋放資源,則該場景中直
接或間接引用到的所有資源(腳本動態加載的不算),默認都不主動釋放。反之
如果啓用了自動釋放,則這些引用到的資源默認都會自動釋放。

防止特定資源被自動釋放

啓用了某個場景的資源自動釋放後,如果在腳本中保存了該場景的資源啓用,當
場景切換後,這些資源就會變成非法的,很容易出錯的。或者如果調用 
cc.game.addPersistRootNode 方法讓某個該場景中的節點保留到了下一個場景,
但這個節點及其子節點用到的所有資源也還是會被同時釋放,導致下個場景不能
再正確訪問這些資源。爲了讓這部分資源在場景切換時不被釋放,我們可以使用 
cc.loader.setAutoRelease 或者 cc.loader.setAutoReleaseRecursively 來保
留這些資源。

1.2.延遲加載資源 - 場景加載策略
在 資源管理器 中,選中指定場景,可以在 屬性檢查器 中看到“延遲加載資源”
選項,該項默認關閉。

不延遲加載資源
加載場景時,如果這個選項關閉,則這個場景直接或間接遞歸依賴的所有資源都
將被加載,全部加載完成後纔會觸發場景切換。

延遲加載資源
加載場景時,如果選項開啓,則這個場景直接或間接依賴的所有貼圖、粒子和聲音
都將被延遲到場景切換後才加載,使場景切換速度極大提升。 
同時,玩家進入場景後可能會看到一些資源陸續顯示出來,並且激活新界面時也可
能會看到界面中的元素陸續顯示出來,因此這種加載方式更適合網頁遊戲。 
使用這種加載方式後,爲了能在場景中更快地顯示需要的資源,建議一開始就讓場
景中暫時不需要顯示的渲染組件(如 Sprite)保持非激活狀態。 
注意,Spine和TieldMap依賴的資源永遠都不會被延遲加載。

2.實際使用時的經驗
2.1.若場景中有其他場景共用的資源,則不要勾選自動釋放。實際上,小遊戲的
場景幾乎不可能全使用自己的資源。
2.2.若遊戲中的關卡少於50關,則可以使用引用將所有關卡的預製文件添加到遊戲
場景中,在進入遊戲場景之前,會加載所有引用的關卡預製文件,這裏可以將所有
關卡預製文件勾選延遲加載。
當關卡多於50關時,即使延遲加載了關卡預製文件,進入遊戲界面也會有明顯的卡
頓,這時推薦使用動態加載關卡預製文件。
另外,關卡界面,若是用滾動區同時顯示了超過100個關卡按鈕,反覆從其他界面進入
關卡界面多次,有可能會擠爆內存,結果小遊戲會黑屏。解決方法就是不使用滾動
區,而使用翻頁。或使用2級菜單,在1級菜單界面提供給玩家選擇關卡範圍的按鈕,
在2級菜單隻顯示對應關卡的按鈕
————————————————
版權聲明:本文爲CSDN博主「愛睡覺的貓L」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/haibo19981/article/details/81251871

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章