-
Notifications
You must be signed in to change notification settings - Fork 1
Unitdataguicreation
NDark edited this page Feb 15, 2013
·
3 revisions
{}
UnitData介面 (UnitDataGUI) 指得是 針對單位資料的GUI顯示
本遊戲中GUI中可以分為幾種
- GUI_Unit_ : 跟著3D單位的GUI , 像是血條
- 基本GUI : 就是不會變的GUI , 如目前的 GUI_PulseEngineRatio
- MessageCard_ : 事件GUI,平時隱藏,有需要才顯示
- UnitDataGUI:
命名名稱為 GUI_[ObjectName]:[Component] :
有別於 [ObjectName]:[Component] 是該元件在3D中的物件名稱,加上GUI_就代表那個元件在介面上的顯示,目前就是該物件的GUI部件
請見 ConstName::CreateGUIComponentObjectName()
- 由於我們只顯示 主角及 選擇對象的 UnitDataGUI 所以該兩組物件的名稱統一放在 放在GUIUpdate中 管理
- 選擇對象 呼叫創造的函式 是由 UnitSelection這邊因為切換選擇而發起 呼叫 GUIUpdate 創造。
- 目前主角與敵人的 防護罩物件創造的座標 會因為主角或敵人而做出反向 , 但是讀取進來的背景圖目前是絕對的(沒有翻轉)
- 背景圖是GUITexture目前不能旋轉 各樣版的圖 區分主角與敵人 也就是樣板要區分主角與敵人
UnitData GUI又分為兩種
- 主角的 UnitDataGUI : 不會改變對象介面
- 選擇對象的 UnitDataGUI : 根據使用者的點選來決定更換的介面
- 因為我們已經把主角的初始化移除,也就是說主角的初始化工作與一般單位相同,所以我們無法在主角的初始化完成之後隨之進行主角的UnitDataGUI創造工作
- 因此目前主角的UnitDataGUI工作的創造是放在LevelGeneration創造完所有的船隻之後呼叫 CreateMainCharacterUnitDataGUI() 創造之
- 此函式即是呼叫 GlobaSingleton:GUIUpdate:CreateMainCharacterUnitDataGUI() 函式創造我們需要的物件
- 傳入 主角的 UnitDataGUI 的 prefab
名稱 Template_GUI_MainCharacterUnitDataBackground
prefab就不一樣所以才需要分兩個函式 - 傳入 主角物件名稱 MainCharacter
- 呼叫 UnitSelectSystem:CreateUnitDataGUI() 真正創造那些物件
最後會取得 創造後的背景物件的名稱 : 所有的UnitDataGUI都掛在這個物件下
最後會取得 創造後的防護罩物件的名稱集合 : 所有的部件 GUI 物件 - 主角物件 的UnitDataGUI 目前沒有移除
- 當玩家透過滑鼠點選敵人就會觸發 UnitSelectionSystem中的 ClickOnUnit()
- 點選框資料 略
- 如果點選框資料中的valid有改變 呼叫 ActiveSelectInformation()
- 點選框出現 : 創造該指定對象物件的 UnitDataGUI
- 點選框消失 : 摧毀指定物件
- 對象的改變 : 摧毀舊的物件 創造新指定的物件
- ActiveSelectInformation() 傳入對象物件及創造或移除
- 如果是移除 就是向 GUIUpdate 呼叫 GUIUpdate :: DestroyTargetUnitDataGUI() 移除之
- 創造 , 呼叫 GUIUpdate :: CreateSelectTargetUnitDataGUI()
傳入 目標物件
- 取得 對象物件的 UnitData
- 使用 傳入的 background gui object prefab 名稱 來創造 UnitDataGUI的背景物件
- 這裡的prefab差別在於主角與敵人不同
- UnitDataGUI的背景物件 的 創造後名稱設定為
GUI_[TargetName]:GUI_UnitDataBackground - 取得 對象的prefab樣板名稱 unitData.m_UnitTemplateName
- 依照玩家的prefab樣板名稱來改變為正確的貼圖 圖片路徑為
Common/Textures/GUI_UnitDataBackground_[unitTemplateName]Texture - UnitDataGUI的背景物件 掛在 GUICamera下 統一管理
- 接下來進行 component UnitData GUI物件的創造
- 依照unitData的元件資料
- 取出關於判定是武器還是防護罩的元件 Keyword = Weapon/ Shield
- 樣板 Template_GUI_Component_[Keyword] 來創造防護罩的 UnitDataGUI物件
名稱為 GUI_[TargetName]:[componentName] - 呼叫 SetUnitDataGUITexture() 來指定物件下的 GUITexture ( HP/Reload )
- 透過 該元件的 座標資料 將此元件放到指定位置(相對於背景圖)
- 呼叫 SetUnitDataGUIText() 來指定物件下的 GUIText (Label)
- 指定 文字訊息 為 此元件的名稱
- 部件物件 掛在 UnitDataGUI的背景物件 下
- 創造出來的部件物件都集合存在 名稱集合中 方便未來的更新