Skip to content
NDark edited this page Feb 15, 2013 · 1 revision

功能清單

{{toc}}

功能清單GUI

主要GUI更新 : GUIUpdate

ConversationManager.cs 對話系統管理器

  1. 掛在 ConversationManagerObject
  2. ActiveConversationSet() 被呼叫啟動各對話集合
  3. m_Audio 每次更新發出音效
  4. m_IsPlayConversation 目前是否啟動中
  5. m_PlayConversation 啟動的狀態
  6. EnableAllDialog() 檢查顯示目前的對話配置
  7. PlayNext() 播放下一個對話
  8. CheckIfPress() 檢查是否需要播放下一文字或對話
  9. CheckIsContinue() 檢查是否還有後續
  10. 如果對話系統正在播放時被啟動其他的對話集合,則使用串列來堆積,避免遺失訊號。
  11. DeActiveOtherSystem() 啟動時其他系統要關閉
  12. ResumeOtherSystem() 結束時回復其他系統的運作

TalkStr

  1. 字串的指定編號.

Potrait

  1. 大頭像 指定大頭像的GUI物件名稱(左邊或右邊)以及要使用的貼圖名稱

Conversation

  1. 對話包含
    1. 複數個大頭像
    2. 複數個字串
  2. EnableDialog() 指定大頭像及各顯示介面物件
  3. 呼叫 PlayNext() 依據對話的流程依序顯示各字串直到結束為止
  4. TalksHasText() 檢查字串集合中是否有指定的語言

ConversationSet 對話集合

  1. 對話集合就是多個Conversation。
  2. 一個對話集合就是一段對話,以m_Key來標明索引。
  3. PlayNext() 依照索引依序播放各Conversation。
  4. EnableDialog() 顯示該對話的介面物件

訊息系統 : MessageQueueManager

  1. 將傳入的訊息一個個顯示出來
  2. 顯示有出現時間及淡出時間
  3. 如果有下一個訊息在等待就不淡出直接換
  4. 出現訊息時有聲音
  5. m_Text 顯示的GUI物件為 GUI_MessageQueueManagerText
  6. 紀錄上一次顯示的字串(串列最舊)
  7. 紀錄上一次加入的字串(串列最新)
  8. 與上一次顯示及上一次加入的字串相同的就不重複加入
  9. AddMessage() 新增顯示字串
  10. CloseMessageNow() 強制關閉目前字串
  11. 顯示的流程是
    1. 結束時檢查下一個並顯示
    2. 顯示直到啟動
    3. 啟動後進入淡出或是直接關閉
    4. 淡出完畢就關閉

BattleScoreManager 戰場結算管理器

  1. 掛在 GlobalSingleton 下
  2. 負責統計數種戰場結算的資訊 m_Scores

    public enum ScoreType
    {
    DestroyNum ,
    DamageSuffer ,
    ElapsedSec ,
    }
  3. AddScore() 增加統計數目
  4. 戰鬥勝負時被啟動
    1. SendScoreData() 傳送資訊到各文字物件上
    2. 依照目前數值更新到文字上
    3. 各文字放置在GUIObject m_ScoreGUIText中

教學事件 : TutorialEvent

  1. 透過關卡檔把script掛在場景上,只有教學關才掛。
    所以其他關卡如果去access就找不到此物件
  2. 目前有
    點選
    控制面版
    移動
  3. 每個教學都用 TimeTrigger 來控制教學的開啟與關閉
  4. 各項運作 會去存取此script 來達到強制關閉教學的功能
  5. 各事件的GUI對象也都是寫死是先創造好(非動態生成)

GUI_EnergyManipulator 能源控制器

  1. 掛在 物件 GUI_EnergyManipulator 上
  2. 各調棒的資料結構
  3. 初始化會取得一次主角船資料
  4. 每次改變能源後會重新取得一次資料
  5. 顯示時才會更新GUI
  6. 可以由外界設定顯示或關閉
  7. RetrieveData() 取得主角船資料並同步調棒
  8. SyncSliderValue() 依照UnitData同步調棒的now與max
  9. TrySetValue() 設定能源數值到UnitData內
  10. OnGUI() 繪出能源調棒
    1. 使用 GUI.VerticalSlider
    2. 使用 GUI.VerticalScrollbar
  11. m_Sliders[ ].m_Value 的值都是絕對能源(是該部位總和量)

EnergySliderType 能源控制器調棒的種類

[System.Serializable]
public enum EnergySliderType
{
	EnergyManipulatorSymbol_Auxiliary ,
	EnergyManipulatorSymbol_Weapon ,
	EnergyManipulatorSymbol_Shield ,
	EnergyManipulatorSymbol_Sensor ,
	EnergyManipulatorSymbol_Engine ,
	EnergyManipulatorSymbol_Max ,
}

EnergySliderStruct 能源控制器調棒的資料結構

  1. 描述調棒上的符號大小
  2. 調棒上的符號物件
  3. 描述調棒的大小
  4. m_Value 目前調棒的數值
  5. 能否被改變,影響到GUI使用的種類

CountDownTimeManager 倒數計時管理器

  1. 預設沒有掛上物件需要特別呼叫掛上
  2. Setup() 設定倒數的時間
  3. 倒數結束會停留在0
  4. 顯示時使用 00:00 的格式
  5. 使用的GUI物件 GUI_CountDownTimeText

ElapsedTimeManager 經過時間管理器

  1. 預設沒有掛上物件需要特別呼叫掛上
  2. Setup() 啟動開始記數
  3. 顯示時使用 00:00 的格式
  4. 使用的GUI物件 GUI_CountDownTimeText

ChallangeLevel01Manager 挑戰關卡1的管理器

  1. 由於挑戰關卡1與一般關卡不同,需要有特殊的管理器來管理
    1. 一般敵艦的產生
    2. 波士敵艦的產生與消滅

CheckLevel9BlackHoleManager 第九關黑洞動畫的管理器

  1. 黑洞播放完畢進入真正的第九關

CheckAcknowledgement 檢查是否要播放Ackonwlegement物件

  1. 自GlobalSingleton.m_AcknowledgementGUIOBjectName取得參數播放該物件
  2. 結束時進入指定關卡
  3. 有播放才顯示SKIP按鈕

CheckLevelIsPlayed 檢查此關卡圖片是否需要顯示

  1. 檢查此關卡圖片是否需要顯示
  2. 掛載在挑選關卡場景的關卡圖片物件上
  3. 其中會傳入 的指定字串 向 PlayerPrefs 取得是否已經玩過 來決定本關是否要開啟.
  4. 同時會控制此物件及其下物件的顯示
  5. 注意!! 指定字串為 前一關的關卡名稱 Level01_XXX 需與GameObject一致
  6. 如果必顯示,則不填。

ClickOn_SetLanguage 點擊設定語言

  1. m_Language 語言參數
  2. 設定到 ResourceLoad
  3. 設定到 PlayerPrefs
  4. 重新讀取語言檔案 StrsManager

ClickOn_UnitDataGUISelection_Active

  1. 點擊 GUI_UnitDataSelection_Active 的反應
  2. 清除主角的部位點選
  3. 關閉自己

ClickOn_UnitDataGUISelection_UnActive

  1. 點擊 GUI_UnitDataSelection_UnActive 的反應
  2. m_SelectName 紀錄目前點選到的部件名稱 並傳送給 主角的 UnitSelectionSystem
  3. m_ChildActive 取得Active的GUIObject
  4. 顯示m_ChildActive

ClickOnGUI_Close 點選就關閉自己

ClickOnGUI_LoadScene 點選就讀場景

ClickOnGUI_OpenURL 點擊開啟指定URL

  1. 掛載在GUITexture物件上
  2. 會依據目前平台來決定開啟方式
  3. 如果是網頁平台就開啟新的視窗
  4. 如果是本機平台就直接開啟指定URL

ClickOnGUI_Record 點擊紀錄是否點到

  1. 使用 timer m_ClickTimer 檢查click
  2. 如點選就設定資訊 m_IsClick
  3. 由外界來取得該資訊

ClickOnGUI_ResetShipCustom 點擊時重置客製化主角船資訊

  1. m_ClickReset 是否重置(預設為true)
  2. 重置就會清空 GlobalSingleton.m_CustomActive 為false(使用關卡設定的主角船)
  3. 如果不重置,就會直接設定GlobalSingleton.m_CustomActive 為真(確保挑戰關卡正確創造主角船)

ClickOnGUI_SelectScene.cs

  1. 按下後開啟關卡(目前進入感謝場景)
  2. 依照物件名稱來決定關卡字串
    設定在 GlobalSingleton.m_LevelString 上
  3. 掛載在選擇關卡場景的關卡圖片上
  4. 有緩衝時間,當物件顯示後一段時間才可以按.
  5. 寫入關卡已被遊玩的設定
  6. 注意 寫入字串為 物件名稱的 第二段 也就是
    GUI_SelectScene:Level01_Tutorial 的 Level01_Tutorial
  7. m_SetAcknoledgeGUIObjeName 是否要啟動感謝GUIObject
    會寫入 GlobalSingleton.m_AcknowledgementGUIOBjectName
  8. 目前進入感謝場景(如沒有感謝物則繼續到戰場)

ClickOnGUI_SelectShipGenerateUnit 點擊產生單位及UnitDataGUI

  1. 點擊產生單位及UnitDataGUI
  2. 用在選擇主角船的頁面
  3. 按鈕後會依據參數產生單位即相對應的UnitDataGUI
  4. 仰賴特製的 關卡產生器 SelectShipLevelGenerator
  5. 仰賴 GUIUpdate
  6. 參數
    1. m_PrefabName 船隻的prefab參數
    2. m_UnitDataName 船隻的unit data參數
    3. m_RaceName 船隻的種族 (目前用不到)
    4. m_SideName 船隻的陣營 (目前用不到)
  7. 點選後會將資料記錄在 GlobalSingleton 中
    1. GlobalSingleton.m_CustomActive 的啟動是由選擇模式的 ClickOnGUI_ResetShipCustom.cs 來設定

ClickOnGUI_ShowOnlySelectScene 點擊顯示對應關卡圖

  1. 顯示點選的紅點及正確位置
  2. 因為必須切換顯示對應關卡所以必須先關閉所有的關卡
  3. 只開啟對應的關卡
  4. 依照本物件的字串組合出關卡的物件字串
    string GameObjectName = “GUI_SelectScene:” + levelString ;

ClickOnGUI_SwitchControlPanelSpecialMode 點擊切換特殊攻擊模式

  1. 因為特殊的面板只有蓋到 Phaser跟Torpedo所以不需要記錄 牽引光束面版
  2. 必須紀錄 幾種物件
    1. 一般 Control Panel Active
    2. 一般 Control Panel Unactive
    3. 特殊 Control Panel Active
    4. 特殊 Control Panel Unactive
  3. SwitchControlPanelToSpecialMode() 指定模式
    1. 切換一般模式
      關閉特殊模式的面版
    2. 切換特殊模式
      關閉一般模式
      只開啟特殊的UnActive
  4. SwitchControlPanelSpecialMode() 切換
    切換主角的 controller.m_SpecialModeNow 為+1

ClickOnGUI_SwitchEnergyManipulator 點選後切換能源模組顯示與否

  1. 點選後切換能源模組顯示與否
  2. 切換後切換鈕會變色跟換位置
  3. EnableEnergyManipulator() 切換到指定狀態:開或關
  4. SwitchEnergyManipulator() 呼叫 GUI_EnergyManipulator 切換開或關
  5. 開啟時預設為關

ClickOnGUI_SwitchGUIObject 按下時切換另一個GUI物件。

  1. m_ControlGUIObjectName 控制的另一個GUI物件名稱

ClickOnGUI_SwitchMiniMap 點選時切換小地圖

  1. 切換時按鈕會移動及變色
  2. EnableMiniMap() 開啟小地圖與否
  3. SwitchMiniMap() 切換小地圖開啟
  4. 預設是關閉

ClickOnGUI_SwitchUnitDataGUI 點選時切換單位部件圖

  1. 依照是否是主角部件來向 GUIUpdate 取得不同的background object
  2. 控制的部件集合background object 將其下所有物件都切換顯示
  3. 切換時切換顏色

ClickOnMessageCard_BackToSelectScene 點選時回到選擇關卡

  1. 此功能是當遊戲中途中斷,要返回的目標場景
  2. 目前掛載在主選單的離開戰鬥按鈕上
  3. 會依照目前是否有設定 GlobalSingleton.m_InformationSceneEnd 來決定返回的場景名稱
  4. 若沒有設定就返回 警告頁面 Scene_Warning 重新開始

ClickOnMessageCard_CloseAndStopEventAudio.cs 點擊後關閉並停止音效播放

  1. 點擊後關閉並停止 UsualEventManagerObject 音效播放
  2. 掛載在目標事件的牌卡上
  3. 關閉此GUI物件
  4. 關閉UsualEventManager物件的音效播放

ClickOnMessageCard_GoToRecruitment.cs

  1. 目前關閉中
  2. 點擊後前往人才徵募頁面

CollectGUIObject.cs GUI物件收集器

創造時自動找到 GUICamera 掛上Parent.

ControlPanelActive.cs 控制Active面版啟動功能

  1. 掛載在控制面版(彩色)的牌卡上
  2. 當按下左鍵時啟動或關閉功能
  3. 如果沒有點選(啟動)就離開 滑鼠離開時也會自動關閉
  4. 沒點選時 檢查滑鼠不在 強制關閉(上步驟的保險措施)

ControlPanelUnActive.cs 控制UnActive面板偵測功能

  1. 掛載在功能面版(灰)的牌卡上
  2. 當滑鼠移入牌卡時開啟對應的功能面版(彩色)
  3. 同時會呼叫 功能面版(彩色)上的 ControlPanelActive 重置狀態為初始化

DrawMiniMap.cs

繪出小地圖

依照玩家的感測系統來更新小地圖
其中玩家物件是獨立創造出來(一次)
其他的物件則是根據玩家感測系統更新

小地圖物件都存在容器中 m_MiniMapUnits

  1. 更新內容如下
  2. CheckMinimapSize() 檢查小地圖是否需要調整範圍
  3. CheckForRemove() 檢查是否需要移除小地圖物件
  4. RemoveUnitInMinimap() 真正移除需要移除的物件
  5. CheckForAdd() 檢查增加小地圖物件
  6. UpdatePos() 更新所有小地圖物件的位置
  7. CreateAMiniMapObj() 產生一個小地圖物件

感測系統會定期檢查單位周圍的單位
而小地圖只取得玩家的感測系統來更新小地圖

  1. m_RefreshTimer 更新週期請參考 BaseDefine.DRAW_MINIMAP_REFRESH_SEC
  2. GenerateMiniMapForMainCharacter() 額外產生主角的物件(不是透過感測器產生)

NamedObjectPair 單位與小地圖物件的組合

  1. Key 單位名稱
  2. 單位物件
  3. 小地圖物件

GUI_ControlPanelDetectZone.cs 控制面板的顯現

(目前沒有使用)

用一個偵測區域來做
不能用mouse over (因為會被蓋住)
注意進入與離開的範圍不同

GUI_DeactiveMainCharacterController 隨著GUI物件出現同時關閉主角的控制器

  1. 由GUI物件的顯示與否來決定
  2. 顯示時取得目前控制器設定,並關閉之
  3. 結束顯示時回復其設定。

GUI_DisplayVersionInfo 顯示版本號碼

讀檔( version.txt )並顯示檔案內的字串
注意,顯示了之後此物件不會隨著關卡讀取而消失.

GUI_FadeInOut 淡入淡出

  1. 依照狀態進行淡入淡出

    public enum FadeState
    {
    UnActive = 0 ,
    FadeIn ,
    Steady ,
    FadeOut ,
    End ,
    }
  2. 同時對物件其下的GUITexture與GUIText作用
  3. 可以設定時間
  4. 可以設定是否要淡入淡出
  5. 如果要淡入,則開始時不顯示,淡入時才顯示
  6. 如果要循環 設定 m_IsLoop

GUI_LoadResourceLocations 讀取資源路徑檔並且透過 GUI_TextParagraph 顯示

  1. 檔案路徑 m_Filepath = “ResourceLocations.txt” ;
  2. 讀入之後使用\n來分段,並且設定給 GUI_TextParagraph

GUI_MouseCursor 控制滑鼠游標的顯示形狀及動畫

  1. 更新MouseCursor的顯示及貼圖
  2. 玩家無功能的情形下不顯示貼圖
  3. 玩家無功能但是有在一個單位(滑鼠座標)上,
  4. 如果沒有鎖定該單位,顯示黑框並有放大縮小動畫
  5. 如果已經鎖定該單位,不顯示貼圖
  6. 如果有功能,則顯示對應的貼圖
  7. 如果有功能,且滑鼠在一個單位上,則有放大縮小動畫
  8. IsOverUnit() 滑鼠是否在MainUpdate已知的單位上
  9. IsSelection() 傳入字串是否是已經被選擇的單位
  10. ResetAnimationSize() 重置滑鼠游標動畫
  11. AnimationResize() 進行滑鼠游標動畫

GUI_ResizeTexture GUITexture的縮放

  1. 注意圖片一定要對準物件的座標中心
  2. m_StandardSize 標準大小
  3. m_SizeNow 目前大小
  4. m_MaximumSize 最大大小
  5. m_Direction 縮放速度

MouseOver_ResizeTexture 滑鼠移動其上時縮放

  1. 繼承 GUI_ResizeTexture

GUI_RetrieveTextAtEnable 顯示時取得文字

  1. 會依據指定的索引值向 StrsManager 取得文字內容
  2. 每次顯示時都會檢查一次

GUI_RetrieveTextParagraphAtEnable 顯示時取得整段文字

  1. GUI_RetrieveTextAtEnable 的陣列版,索引值必須指定為陣列形式
  2. 會依據目前取得的GUIText來複製其文字格式

GUI_ScaleInTime 當GUITexture顯示時就把時間流逝減緩

  1. 減緩不代表停止,此時的參數是希望遊戲依然進行,參數請參考 BaseDefine.SLOWMOTION_SCALE_IN_TIME
  2. GUITexture結束顯示時就會回復,正常運行的時間參數是 1.0 請參考 BaseDefine.NORMAL_SCALE_IN_TIME
  3. GUITexture顯示時就會設定其減緩。

GUI_TextParagraph 將文字產生為不同的GUIText來顯示

  1. 會依據目前的文字節點來複製其格式
  2. 目前的預設值是警告頁面的文字,還未分離
  3. m_ActiveInStart 是否開始時連帶啟動,需先設定好文字
  4. m_StrArray 文字陣列
  5. m_ActiveAnimation 是否要有動畫
  6. m_AnimationSpeed 動畫的方向速度
  7. m_ActiveUpperBound 動畫是否有上限的限制
  8. m_ExceedUpperBound 超過上限的長度
  9. m_AutoDetectAnimatinMax 是否自動偵測動畫的長度及結束
  10. m_AnimationMaximum 動畫的長度
  11. m_ChildList 產生出來的文字物件

GUI_Unit_Update.cs 單位血條的GUI更新

  1. 血量條是每個單位有一份
  2. 使用樣板名稱 Template_GUI_Ship_ShipIntagraty
  3. 在創造單位時 建立 與船隻名稱雷同的物件
  4. 物件名稱為 [UnitObjectName]:GUI_Ship_UnitIntagraty
  5. 依照單位的血量更新GUI的長度
  6. 此腳本掛在單位上。讓血調隨著單位創造建立。
  7. 此腳本隨著單位摧毀時,同時摧毀血條物件。
  8. 血條的部件名稱是"UnitIntagraty"

GUI_HideInSec.cs 一定時間後隱藏GUITexture

  1. 透過GUITexture的顯示隱藏來運作
  2. m_Show 啟動與否
  3. 當未啟動時 偵測到顯示 就開始倒數
  4. 倒數結束就隱藏

LoadLevelInSec 一定時間後讀取關卡

目前掛載在廣告流程

MouseDetect_TellCharacterNotToMove.cs 範圍內通知主角不可因為點選而移動

  1. 會使用物件的位置來決定範圍
  2. 會使用GUITexture的pixelInset來決定範圍

MouseOver_RewindHide 滑鼠經過時呼叫 GUI_HideInSec 重新計時

  1. 必須指定GUI_HideInSec所在物件

MouseOver_ShowGUI.cs 滑鼠經過時顯示GUITexture

目前掛載在 關卡2的牌卡上
目前客製化
控制物件是 GUI_MessageCard_KlingonStyleLink

MouseOver_UnitDataGUI.cs 滑鼠移動在 UnitDataGUI 的反應

  1. 掛在 HP 與 Label 上
  2. 更新 選擇部位選擇框的位置及顯示

ReloadAnimationManager 填充完畢的動畫播放管理器

  1. 掛載在 ReloadCompletenessAnimator 物件下
  2. UnitDataGUI 武器的填充完畢的動畫 管理器
  3. Setup() 呼叫時新增指定的單位及部件,然後透過GUIUpdate找到指定的UnitDataGUI的物件名稱做為索引放到m_AnimationMap中
  4. 播放完畢就移除
  5. CONST_AlertFontSize 警告的大小
  6. CONST_NormalFontSize 正常的大小
  7. CONST_ElapsedSecSteady 穩定的經過時間
  8. CONST_ElapsedSecTotal 總共的經過時間
  9. m_ReloadCompleteAudio 播放的聲音

ReloadCompletenessAnimaionTrack 填充完畢的動畫軌

UnitDataGUIAnimationManager 部件介面的震動特效

  1. CONST_VibrationDistance 震動大小
  2. CONST_VibrationSec 震動秒數
  3. m_VibrationMap 震動的動畫軌,以介面的物件名稱做為索引
  4. SetupVibration() 設定介面物件震動,需要傳入單位與部件名稱
  5. UpdateVibration() 更新各動畫軌的震動與移除
  6. SetPosition() 設定物件的2D位置

AnimationTrack 特效軌

Clone this wiki locally