Unigine中的ComponentSystem系統如何使用

  1. ComponentSystem的代碼結構圖如下

  1. ComponentSystem的總體方法

和Unity3D中的ComponentSystem類似,該系統將可以添加多個類實現到一個對象中。使得程序的邏輯可以分塊在不同的地方。

其具體行爲類似於插件系統,但比插件方便很多。因爲節點對象,可以綁定多個 Component類實現,同時,又可以在源代碼級別進行分解。使用非常方便。

截至Unigine V2.7.1源代碼版本中,該系統還處於獨立狀態,但預計新版本系統中,將會整合進SDK中

 

以下是具體步驟,如何使用ComponentSystem:

  1. 目前該系統還沒有在SDK中默認包含,需要在Sample目錄下找到。位置是

SDK 目錄下的\source\samples\Api\Logics\ComponentSystem

將ComponentSystem目錄完整複製到你要用到的項目中,並且包含。【最好保證目錄結構層次】

 

  1. 寫一個繼承自ComponentBase的類,用作外部實現具體邏輯的類,這個類後續會添加綁定到某個節點對象上。

這個類的具體實現中,有三大塊比較重要

  1. 其中第一個是所有屬性對象實質上存儲到了data目錄下的一個名叫該屬性名的.prop屬性文件中。
  2. 第二部分是寫了暴露在編輯器中的屬性內容
  3. 第三部分是介入到World場景中幾個重要循環函數的重載。組件的具體實現其實也就是在其中。

 

  1. 在代碼中使用剛纔創建的組件類,如下圖

  1. RegisterComponent函數將我們剛纔創建的組件類TestA添加到組件系統中

其內部實現,應該是一個map list,維持着一堆

  1. 中間這部分是獲取默認場景中的材質球對象(僅測試用)
  2. 將剛纔創建的組件類testA,添加到節點對象myTestNode中.然後你就可以在具體的update函數中做各種行爲,目前我們就操作材質球移動。

整體代碼如下圖:

 

完整的項目代碼在附件中。

 

 

 

 

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