Unity進階之ET網絡游戲開發框架 05-搭建自己的第一個Scene


版權申明:

  • 本文原創首發於以下網站:
  1. 博客園『優夢創客』的空間:https://www.cnblogs.com/raymondking123
  2. 優夢創客的官方博客:https://91make.top
  3. 優夢創客的游戲講堂:https://91make.ke.qq.com
  4. 『優夢創客』的微信公眾號: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的場景層級之下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM