天天看點

CreatorPrimer|元件編碼心得(上)1. 元件編碼常見問題2. 合格元件參考标準3. 元件的類型4. 小結

Cocos Creator的核心是元件化,如何編寫出高品質的元件代碼值得程式員們不斷探索,Shawn今天分享一點元件編碼的心得供大家參考:“怎樣才是一個合格的元件?”。

1. 元件編碼常見問題

Shawn在2年的Cocos Creator項目經驗和案例中總結了兩條元件編碼問題:

  1. 濫用properties屬性:把暴露到編輯器上的元件屬性當成成員變量的一種實作方式;或将properties屬性當成通路外部節點、資源的便利的通道。
  2. 場景樹結構假設:元件代碼中存對場景樹的寫死,導緻元件隻能工作在這種特定的場景樹結構下,失去了重用能力,同時也限制了場景樹不能輕易變量動。

上面兩個問題帶來的後果是:元件與元件、元件與外部節點、元件與資源、元件與場景樹結構形成高度耦合,如下圖所示:

CreatorPrimer|元件編碼心得(上)1. 元件編碼常見問題2. 合格元件參考标準3. 元件的類型4. 小結

元件與外部對象産生了千線萬縷的關系,這樣的設計讓元件、界面都完全動彈不得,完全背離了元件化開發的本質,陷入了高度耦合的泥沼之中。

2. 合格元件參考标準

怎樣才算是一個合格的元件?

這個問題困擾Shawn很長一段時間,其實答案近在眼前,那就是:模仿Cocos Creator内置元件,以引擎内置元件為參考标準。

Cocos Creator的内置元件絕大部分都是可通用的,可以挂載到任意節點,這裡簡單總結三點:

  1. 簡單易用:程式員要将設計師看見是你的客戶,提供給他簡單好用的元件。
  2. 複用性強:編寫一次可以在更多的地方使用,解決普遍性問題。
  3. 易于測試:不管是程式員還是設計師都要能友善的營造元件測試預覽環境。

有了好的參考的标準,就有了行動的指南針,接下來看内置元件給我們的啟發。

3. 元件的類型

之前Shawn的教程中就提到,元件分為兩類:神器與結界。随着教程的不斷更新,Shawn也在思考使用更為貼切的用詞,慶幸得到引擎組大神們的幫助,規範用詞,将兩類元件定義為:功能型元件與控制型元件,請看下圖:

CreatorPrimer|元件編碼心得(上)1. 元件編碼常見問題2. 合格元件參考标準3. 元件的類型4. 小結
  1. 功能型元件:以裝飾宿主節點為己任,常用的有Sprite、Labe、Widget屬于這類。
  2. 控制型元件:管理和控制子孫節點,比如:ScreollView、ToggleContainer,它們内部是由多個子孫點節點組合而成。

在編寫自定元件時,需要明确我們是要提供什麼類型的元件去解決問題,比如我們教程Demo中的:節點ZIndex控制、節點可拖動、點選節點切換圖檔,它們都是功能型元件,通常是一個純元件腳本檔案。

在項目中,例如我們做的提示對話框、玩家頭像、商品道具,它們通常是由背景、前景、圖檔、邊框、文字等等節點構成,我們就需要為它們定制各自的控制元件。

功能型元件解決“點”上的問題,控制型元件解決“線”、“面”上的問題,它們之間又可以互相嵌套、組合進而解決“體”上的問題。

4. 小結

本篇教程主要是分享Shanw在元件程式設計中發現的問題,思考“怎樣才是一個合格的元件?”。探索編寫合格元件的指導思想,總結了功能型與控制型兩類元件模型,供大家參考。

下一次我們再繼續這個話題,如何去編寫簡單易用、複用性強、易于測試的元件,具體說明功能型和控制型元件的編碼心得。

編寫高品質的元件的目的是為了提高開發效率和産品品質,在這條道路上任重道遠,大家一起努、加油!