日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Cocos creator -引擎解构

發布時間:2024/7/23 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Cocos creator -引擎解构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Cocos creator -引擎結構

在長期的開發中,發現cc對大型的手游加載項目的速度很慢,于是我產生了一種想法,想把
cocos creator移植在Linux上做開發,編譯時在Windows。但是這樣太麻煩了。索性,研究一下它的構造,看看能否優化一下.
于是發現了很精彩的結構和內造,接下來解釋一下,有能力的開發者,可以自由修改版本,但不能使用修改的版本進行商業化,這是官方的原話。
首先看看我對我的cc都做了什么吧?

1.修改了icon,證明這是我個人使用,不對外開放的 2.增加了 一個局域網穿透功能()=>將綁定的:7456端口 映射給 公網ip+域名 = 對外訪問的游戲(全程掛起調試的游戲即可)3.增加了 一個骨骼動畫()=>將彈出一個 UI面板,可以將目前的骨骼動畫,拖拉拽改動,并保存會生成一個如:{320,740;310,730;300,720;}這樣格式的json,不用手寫,即可快速遍歷讀寫生成骨骼動畫拉![快夸我是不是很聰明??]4.增加了一個 圖片轉素材的功能會將你導入的PNG二值化,然后移除背景色,幫你扣出圖來if(你沒有摳圖)=>幫你摳圖->幫你壓縮->完成else(你摳圖了)=>幫你壓縮->完成


1.打開你的CC根目錄,找到 Resources 資源目錄 =>.editors編輯錄=》creator -你在使用的版本。[我這里以 2.3.3為例]

  • Locales = 加密的資源\源-工程\時間戳\瀏覽器擴展 等
  • resources = 引擎資源\內核\css\庫
  • swift shader = C++的Lib,工程UI\字體\圖標\MAIFO
    如果你嘗試去打開 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.被攔截
    想知道自己的調用,是否成功或失敗

    webviewEvents: {default: [],type: cc.Component.EventHandler,},

    應該拿到它的回調,來看返回信息

    • 設置 JavaScript 接口方案(與 ‘setOnJSCallback’ 配套使用)
    • 當加載 URL 以 JavaScript 接口方案開始時調用這個回調函數。
    setOnJSCallback (callback) {if (this._impl) {this._impl.setOnJSCallback(callback);}},

    執行 WebView 內部頁面腳本
    需要自行解決跨域問題

    evaluateJS (str) {if (this._impl) {this._impl.evaluateJS(str);}},

    你必須使用,node.on來監聽
    因為此事件是從該組件所屬的 Node 上面派發出來的

    • 如果你不再使用 WebView,并且組件未添加到場景中,那么你必須手動對組件或所在節點調用 destroy。
    • 這樣才能移除網頁上的 DOM 節點,避免 Web 平臺內存泄露。

    如果你想要修改WebView的界面樣式

    • 打開webview-impl
    • _createDom 是創造的元素
    • createDomElementIfNeeded 是構造的樣式
    • WebViewImpl.EventType 里有4種狀態碼
    • 在W.V.E.T 下方有 判斷設備類型
    //如果你在上方修改了,那么建議你在新建一個自己的方法,調用官方的方法,來傳值 //因為不知道會關聯多少方法的值,所以謹慎一些 //------------------------------------------------ //然后在你要的設備類型下執行你的方法,那么屬于你想要的顯示樣式就可以實現了 //這種方法不同于你在CC里的直接顯示方式!if (sys.os === sys.OS_IOS)polyfill.enableDiv = true;if (sys.isMobile) {if (sys.browserType === sys.BROWSER_TYPE_FIREFOX) {polyfill.enableBG = true;} } else {if (sys.browserType === sys.BROWSER_TYPE_IE) {polyfill.closeHistory = true;} }

    日常里基本會遇到的問題,再次提供的思路,是方便各位深度理解CC原理;
    文章到此,我是大菠蘿~
    如果說的不對的地方,歡迎切磋呢!

    總結

    以上是生活随笔為你收集整理的Cocos creator -引擎解构的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。