CocosCreator開發筆記(25)-一些總結

包體優化

  • 刪除無用代碼
  • 定期清理,刪除重複和未引用的資源
  • 壓縮音效文件,儘可能少佔用空間
  • 資源儘量放到res目錄下。因爲resources目錄下的每個文件都會生成一個json,構建導出時,把資源映射關係存到Settings.js中,導致setting.js變大,所以,不是代碼動態加載的資源,千萬別放到resources目錄下。另外爲了防止緩存問題,構建時通常使用md5,此時Settings.js文件會進一步膨脹。
  • 對於圖片資源,儘量讓美術人員出圖時就壓縮好。如果使用了Creator的自動圖集功能,最好在構建後用TinyPNG把這些合成大圖再壓縮一遍。有個問題是Creator2.0開始構建後文件都是uuid命名,可以用Creator官方插件找出它們的對應關係,再用腳本分析出哪些是自動圖集生成的,之後再壓縮這些圖即可。

性能優化

  • 多個Label儘量相鄰放在同一個節點下,可合併DrawCall。
  • 九宮格Sprite和藝術數字圖片即使同一層次,也不能合併DrawCall。
  • Prefab的性能消耗主要在cc.instaniateaddChild
  • 減小節點層級和數量。如果是重複多次使用的節點,一定要使用對象池,並且Prefab記得勾選“優化多次創建性能”這個選項

WKWebView

iOS開放了WKWebView,具有一定的JIT支持,有助於提升遊戲性能,如果遊戲需要打包成h5版本接入到App,推薦App的iOS版本使用WKWebView。

jsc

CocosCreator構建安卓App時,會把js代碼加密壓縮爲jsc文件(可通過選項配置),App運行時引擎執行解壓解密,然後調用SpiderMonkey的虛擬環境接口運行js代碼。

節點屬性

  • 假設每個組件的初始化都在onload完成,當一個節點的初始化依賴於另一個節點的屬性時,就有可能出現異常,因爲有可能另一個節點還沒有執行onload。而start是所有組件的onload都執行完了纔會執行,這時無論獲取哪個節點的屬性都不會有問題,因爲那個節點已經初始化完成了。所以節點的UI初始化最好放在start中。
  • CocosCreator編輯器中變量綁定的節點,其實對應的是該節點所在的腳本對象,但腳本對象總會有個Node成員指向該節點,其它非Node類的組件都放在Node下的組件列表裏。
  • CocosCreator腳本中Properties變量名稱前加 _ 下劃線,代表該屬性在編輯器不可見。
  • 測試發現,Scale和Size屬性雖然互相獨立,但運行時修改Scale會影響Size的值。

資源目錄分類

  • 構建後的res目錄裏面,有import、raw-assets、raw-internal共3個文件夾。
  • import:這個文件夾裏有一些奇怪的目錄,放着長文件名的json文件,是遊戲場景,預製體,圖片信息的配置文件;
  • raw-assets:存放遊戲的圖片、聲音文件;
  • raw-internal:存放遊戲默認的圖片、粒子資源;

loadScene

cc.loader.loadScene是個異步調用,執行順序是:loadScene -> Scene的onLoad -> loadScene的回調 -> Scene的Start。

Animation回調

  • stop: 動畫停止播放時,一般需求用這個就可以。
  • finished: 整個節點所有動畫播放完成纔會觸發。

JavaScript語法

  • 訪問對象屬性有2種方法,一是點運算符,一是[]運算符。
  • 如果屬性名有小數點,不能用點運算符。
  • 用[]訪問屬性名必須加引號,如果屬性名是數字,可以不加引號;
  • 遍歷對象屬性,可以用Object.keysfor...in
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章