Skip to content

Unitdataguicreation

NDark edited this page Feb 15, 2013 · 3 revisions

{}

UnitData介面創造

說明

UnitData介面 (UnitDataGUI) 指得是 針對單位資料的GUI顯示

本遊戲中GUI中可以分為幾種

  1. GUI_Unit_ : 跟著3D單位的GUI , 像是血條
  2. 基本GUI : 就是不會變的GUI , 如目前的 GUI_PulseEngineRatio
  3. MessageCard_ : 事件GUI,平時隱藏,有需要才顯示
  4. UnitDataGUI:
    命名名稱為 GUI_[ObjectName]:[Component] :
    有別於 [ObjectName]:[Component] 是該元件在3D中的物件名稱,加上GUI_就代表那個元件在介面上的顯示,目前就是該物件的GUI部件
    請見 ConstName::CreateGUIComponentObjectName()

注意事項

  1. 由於我們只顯示 主角及 選擇對象的 UnitDataGUI 所以該兩組物件的名稱統一放在 放在GUIUpdate中 管理
  2. 選擇對象 呼叫創造的函式 是由 UnitSelection這邊因為切換選擇而發起 呼叫 GUIUpdate 創造。
  3. 目前主角與敵人的 防護罩物件創造的座標 會因為主角或敵人而做出反向 , 但是讀取進來的背景圖目前是絕對的(沒有翻轉)
    1. 背景圖是GUITexture目前不能旋轉 各樣版的圖 區分主角與敵人 也就是樣板要區分主角與敵人

參考資料

  1. 單位的描準系統
  2. 部件的建構流程
  3. GUIUpdate
  4. UnitSelectionSystem
  5. LevelGeneration

內容

UnitData GUI又分為兩種

  1. 主角的 UnitDataGUI : 不會改變對象介面
  2. 選擇對象的 UnitDataGUI : 根據使用者的點選來決定更換的介面

主角的UnitDataGUI

  1. 因為我們已經把主角的初始化移除,也就是說主角的初始化工作與一般單位相同,所以我們無法在主角的初始化完成之後隨之進行主角的UnitDataGUI創造工作
  2. 因此目前主角的UnitDataGUI工作的創造是放在LevelGeneration創造完所有的船隻之後呼叫 CreateMainCharacterUnitDataGUI() 創造之
  3. 此函式即是呼叫 GlobaSingleton:GUIUpdate:CreateMainCharacterUnitDataGUI() 函式創造我們需要的物件
  4. 傳入 主角的 UnitDataGUI 的 prefab
    名稱 Template_GUI_MainCharacterUnitDataBackground
    prefab就不一樣所以才需要分兩個函式
  5. 傳入 主角物件名稱 MainCharacter
  6. 呼叫 UnitSelectSystem:CreateUnitDataGUI() 真正創造那些物件
    最後會取得 創造後的背景物件的名稱 : 所有的UnitDataGUI都掛在這個物件下
    最後會取得 創造後的防護罩物件的名稱集合 : 所有的部件 GUI 物件
  7. 主角物件 的UnitDataGUI 目前沒有移除

選擇物件的UnitDataGUI

  1. 當玩家透過滑鼠點選敵人就會觸發 UnitSelectionSystem中的 ClickOnUnit()
  2. 點選框資料 略
  3. 如果點選框資料中的valid有改變 呼叫 ActiveSelectInformation()
    1. 點選框出現 : 創造該指定對象物件的 UnitDataGUI
    2. 點選框消失 : 摧毀指定物件
    3. 對象的改變 : 摧毀舊的物件 創造新指定的物件
  4. ActiveSelectInformation() 傳入對象物件及創造或移除
    1. 如果是移除 就是向 GUIUpdate 呼叫 GUIUpdate :: DestroyTargetUnitDataGUI() 移除之
    2. 創造 , 呼叫 GUIUpdate :: CreateSelectTargetUnitDataGUI()
      傳入 目標物件

GUIUpdate:CreateUnitDataGUI()

  1. 取得 對象物件的 UnitData
  2. 使用 傳入的 background gui object prefab 名稱 來創造 UnitDataGUI的背景物件
    1. 這裡的prefab差別在於主角與敵人不同
  3. UnitDataGUI的背景物件 的 創造後名稱設定為
    GUI_[TargetName]:GUI_UnitDataBackground
  4. 取得 對象的prefab樣板名稱 unitData.m_UnitTemplateName
  5. 依照玩家的prefab樣板名稱來改變為正確的貼圖 圖片路徑為
    Common/Textures/GUI_UnitDataBackground_[unitTemplateName]Texture
  6. UnitDataGUI的背景物件 掛在 GUICamera下 統一管理
  7. 接下來進行 component UnitData GUI物件的創造
    1. 依照unitData的元件資料
    2. 取出關於判定是武器還是防護罩的元件 Keyword = Weapon/ Shield
    3. 樣板 Template_GUI_Component_[Keyword] 來創造防護罩的 UnitDataGUI物件
      名稱為 GUI_[TargetName]:[componentName]
    4. 呼叫 SetUnitDataGUITexture() 來指定物件下的 GUITexture ( HP/Reload )
      1. 透過 該元件的 座標資料 將此元件放到指定位置(相對於背景圖)
    5. 呼叫 SetUnitDataGUIText() 來指定物件下的 GUIText (Label)
      1. 指定 文字訊息 為 此元件的名稱
    6. 部件物件 掛在 UnitDataGUI的背景物件 下
    7. 創造出來的部件物件都集合存在 名稱集合中 方便未來的更新
Clone this wiki locally