Unity進階之ET網路遊戲開發框架 05-搭建自己的第一個Scene
阿新 • • 發佈:2019-08-20
版權申明:
- 本文原創首發於以下網站:
- 部落格園『優夢創客』的空間:https://www.cnblogs.com/raymondking123
- 優夢創客的官方部落格:https://91make.top
- 優夢創客的遊戲講堂:https://91make.ke.qq.com
- 『優夢創客』的微信公眾號:umaketop
- 您可以自由轉載,但必須加入完整的版權宣告!
ComponentView:
- 其object型別的Component成員能顯示物件的字串表示,如果是Component,會顯示其MongoHelper.ToJson()的結果,便於除錯
ReferenceCollector:
- 用於收集物件引用
- 使用方法:需要一個物件,就在該元件內增加一個鍵值對,也可以刪除或排序等
- 好處:使用該元件可通過字串(鍵)直接訪問到物件(值),而無需建立無用的類(只是為每個GameObject要引用的物件單獨建立一個指令碼,並將被引用物件指定為該類的成員)
UIComponent:
- 管理UI物件的集合(增刪改查)
- 其AwakeSystem會去找UICamera,並作為其管理的UI物件的worldCamera
- 該元件每Add一個UI Entity,Add方法就會:
- 將該UI Entity的父節點設定為該UIComponent
- Entity is a Component,每一個Component有一個GameObject欄位,表示該實體對應的圖形表示
- 設定Component的Parent屬性的值,不僅會設定Component的parent欄位的值,也會同步設定該Component的GameObject在場景中的父節點(參見:Component.Parent.set())
- 所以:Add一個Component就會新增一個場景子節點!
- 這種設計思想是:用一個管理型的Component來統一管理該型別的Component的集合(如:UIComponent管理UI實體的集合)
Component的層次結構:
- 只有Entity可以AddComponent,所以Component的Parent一定是一個Entity,但Entity的Parent不一定是Entity,也可以是Component,例如:我們建立的UI實體的父節點就是UIComponent元件
- Component可以單獨作為一個GameObject存在(在場景層級中的位置任意),Entity是Component的集合(Entity建立時需要指定一個主Component,就好比Unity建立GameObject都要建立一個Transform元件,參見:ComponentFactory.Create()),所以一個Entity的Component未必都在Entity的場景層級之下