Cocos creator -引擎解构
Cocos creator -引擎結構
在長期的開發中,發現cc對大型的手游加載項目的速度很慢,于是我產生了一種想法,想把
cocos creator移植在Linux上做開發,編譯時在Windows。但是這樣太麻煩了。索性,研究一下它的構造,看看能否優化一下.
于是發現了很精彩的結構和內造,接下來解釋一下,有能力的開發者,可以自由修改版本,但不能使用修改的版本進行商業化,這是官方的原話。
首先看看我對我的cc都做了什么吧?
1.打開你的CC根目錄,找到 Resources 資源目錄 =>.editors編輯錄=》creator -你在使用的版本。[我這里以 2.3.3為例]
如果你嘗試去打開 swift shader 的lib,或許你可以修改一些界面樣式
然后為其注入call 來實現某種功能
但他主要的,是為cc創建界面而準備的動態庫
2.Cocos Creator -自己構造函數
進入 utils->api ,打開這個文件
如果你對TS很熟悉,那么這里你就能構造并定義你自己的方法。
但很遺憾,我沒有學TS。。 [跳到下一章吧!]
2.1 Cocos Creator -貢獻者
你可以在 Sharp-package.json 里 添加你的 Git,或者增加你的名字,在本地項目里,可以看見自己。
(自我籍慰)沒什么用
2.2 Cocos Creator - templates 模板教程工程
你可以在templates里,找到幾個示范工程,最簡單的hello world就是其中之一
2.3 Cocos Creator-static 內構目錄
static-img 下:你可以修改cc的圖標,在編譯時,看到自己的畫面
目前不知道,是否會修改編譯調試的那個logo 圖標
static-icon 下:編譯調試時一并打包進去的icon
其余的可以自行看看,大部分是一些描述和資源文件,以及壓縮插件和導入資源的加載方式
和過濾方式
3.cocos creator-inspector 引擎內核構造
3.1accessibility -訪問的成員屬性與定義
3.2animation - 對animation的高度封裝 (cc的寫法很好,無需優化) √可學習
3.3audits - 你的coco 工作流-聯網-驗證-云存
3.4bindings - 綁定你的賬號 和3.3關聯
3.5changes - 啟動時檢查你的版本與目標版本是否一致
3.6cm - web的圖像顯示方式轉換為 cc獨有的 坐標系
3.7color_picker - 將cc-ui的事件color操作轉換,和拾色器工具,顏色變化node
3.8console 調試臺
3.9cookie_table - 你的瀏覽器調試器下的cookie記錄,使你能看到
3.10coverage - cc的更新推送
3.11 cpu_profiler_test_runner - CC.CPU調試核心調用模塊
3.12 devices - 驅動模塊調用啟動
3.13 elements - ×無解
3.14 javascript_metadata - 語言二次解析
3.15 layer_viewer_module - 圖層模塊 ,對圖層的設定 √可學習 √可改
默認的基數z-index:9000 0->1->2->3->4
取決于Node的類型
3.16 quick_open_module -快速打開模塊 ,你為某一moudule勾選了模塊后的導入
3.17profiler - 檢查機制 時刻檢查你的語法
其實只對class屬性生效
3.18sdk_test_runner - 模擬器啟動 ,如果你以模擬器啟動調試的話
3.19 timeline - 由cc生成的時間軸動畫
4.cocos creator-engine 引擎內核渲染
4.1 bin -》 cocos2d-jsb
在你調試時,這個文件會處理調試的信息,進行傳遞或拋出異常
你可以漢化它的 “1001”:“xxxxxxxxx”,對以后的開發進行加速
這樣你看到一些英文的時候,可以立即想到哪些問題
4.2 cocos2d 是整文中的重點
4.2.1 actions +animation -運動動畫-
理解cc的動畫先要理解它的坐標系,本文有講;
理解坐標系后,可以進階,捕捉或自定義方法,構造簡單的動畫
你可以向 actions-index.js 里 require你的方法路徑
CC.tween 可以替代傳統的 actions ,它更為靈活
但不要刻意追求最好的,要寫最適合的!不是你有了Gucci,Nike就不香了
4.2.2 audio-音頻
CC.audio 對音頻的構造 使用了狀態標記
這樣便于多個子集的音頻管理
想象一下你的一個頁面里,幾百個音頻如果同時播放,不是亂套了?
你設置了ture和false,然后cc幫你設置了一個狀態集。
4.2.3 compression- 壓縮
是目前大多數人很頭疼的事情,有些技術,只專注寫程序,不管其它的組件大小,資源大小。
New prefab 很多人認為它就是 生成了一個,于是很多地方都用prefab,最后整個項目成千上百個組件。
為什么你在本機寫了這么多,你沒有感到卡頓?因為你已經有了運行和緩存\和log緩存,cc可以很快速的幫你指定prefab的位置;但你的工程考給別人,這個人的加載就會變的很慢!一直到他調試把整個游戲跑了一遍后,下次啟動才沒有這么卡頓。
卡頓原因:
1.所有的資源打包后,沒有緩存和日志了,所以會很卡(暫時的)
2.項目沒有做好壓縮優化
3.重復書寫的高效率,低解釋語法太多了
4.2.4 core -核心
CCNode.js
對節點的操作-選擇,旋轉,點擊等操作
CCGame.js
對游戲的渲染類型判斷,取決于瀏覽器的回調返回
你的游戲頁面邏輯渲染,統統由這個文件來判斷是否執行生效
組件
assets
- CCAudioClip-音頻剪輯
- CCBitmapFont-bitmap字體
- CCLabelAtlas-標簽集
- CCPrefab-預制體
還有一些沒有列出來的,組件。有能力,可以自己看看它們的定義
這里只是告訴大家這里有什么
camera
CCCamera 對相機的定義
攝像機在制作卷軸或是其他需要移動屏幕的游戲時比較有用,使用攝像機將會比移動節點來移動屏幕更加高效。
如果你對你的2D相機,不是很滿意,你可以修改它的縮放比率
- @property {Number} zoomRatio
以及他的模式,裁切,過濾色。
4.2.5 webview
這是所有個人發開者,公司,必須會用的功能
如:激勵廣告
CCWebView
#zh WebView 組件,用于在游戲中顯示網頁。由于不同平臺對于 WebView 組件的授權、API、控制方式都不同,還沒有形成統一的標準,所以目前只支持 Web、iOS 和 Android 平臺。
各位可能在實際開發中遇到的問題:
1.webview視圖被遮擋
2.打不開指定的網頁
3.被攔截
想知道自己的調用,是否成功或失敗
應該拿到它的回調,來看返回信息
- 設置 JavaScript 接口方案(與 ‘setOnJSCallback’ 配套使用)
- 當加載 URL 以 JavaScript 接口方案開始時調用這個回調函數。
執行 WebView 內部頁面腳本
需要自行解決跨域問題
你必須使用,node.on來監聽
因為此事件是從該組件所屬的 Node 上面派發出來的
- 如果你不再使用 WebView,并且組件未添加到場景中,那么你必須手動對組件或所在節點調用 destroy。
- 這樣才能移除網頁上的 DOM 節點,避免 Web 平臺內存泄露。
如果你想要修改WebView的界面樣式
- 打開webview-impl
- _createDom 是創造的元素
- createDomElementIfNeeded 是構造的樣式
- WebViewImpl.EventType 里有4種狀態碼
- 在W.V.E.T 下方有 判斷設備類型
日常里基本會遇到的問題,再次提供的思路,是方便各位深度理解CC原理;
文章到此,我是大菠蘿~
如果說的不對的地方,歡迎切磋呢!
總結
以上是生活随笔為你收集整理的Cocos creator -引擎解构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql插入实现存在更新_mysql
- 下一篇: boundcolumn 根据值进行判断_