-
Notifications
You must be signed in to change notification settings - Fork 1
Scriptgui
NDark edited this page Feb 15, 2013
·
1 revision
{{toc}}
主要GUI更新 : GUIUpdate
- 掛在 ConversationManagerObject
- ActiveConversationSet() 被呼叫啟動各對話集合
- m_Audio 每次更新發出音效
- m_IsPlayConversation 目前是否啟動中
- m_PlayConversation 啟動的狀態
- EnableAllDialog() 檢查顯示目前的對話配置
- PlayNext() 播放下一個對話
- CheckIfPress() 檢查是否需要播放下一文字或對話
- CheckIsContinue() 檢查是否還有後續
- 如果對話系統正在播放時被啟動其他的對話集合,則使用串列來堆積,避免遺失訊號。
- DeActiveOtherSystem() 啟動時其他系統要關閉
- ResumeOtherSystem() 結束時回復其他系統的運作
- 字串的指定編號.
- 大頭像 指定大頭像的GUI物件名稱(左邊或右邊)以及要使用的貼圖名稱
- 對話包含
- 複數個大頭像
- 複數個字串
- EnableDialog() 指定大頭像及各顯示介面物件
- 呼叫 PlayNext() 依據對話的流程依序顯示各字串直到結束為止
- TalksHasText() 檢查字串集合中是否有指定的語言
- 對話集合就是多個Conversation。
- 一個對話集合就是一段對話,以m_Key來標明索引。
- PlayNext() 依照索引依序播放各Conversation。
- EnableDialog() 顯示該對話的介面物件
- 將傳入的訊息一個個顯示出來
- 顯示有出現時間及淡出時間
- 如果有下一個訊息在等待就不淡出直接換
- 出現訊息時有聲音
- m_Text 顯示的GUI物件為 GUI_MessageQueueManagerText
- 紀錄上一次顯示的字串(串列最舊)
- 紀錄上一次加入的字串(串列最新)
- 與上一次顯示及上一次加入的字串相同的就不重複加入
- AddMessage() 新增顯示字串
- CloseMessageNow() 強制關閉目前字串
- 顯示的流程是
- 結束時檢查下一個並顯示
- 顯示直到啟動
- 啟動後進入淡出或是直接關閉
- 淡出完畢就關閉
- 掛在 GlobalSingleton 下
- 負責統計數種戰場結算的資訊 m_Scores
public enum ScoreType
{
DestroyNum ,
DamageSuffer ,
ElapsedSec ,
}
- AddScore() 增加統計數目
- 戰鬥勝負時被啟動
- SendScoreData() 傳送資訊到各文字物件上
- 依照目前數值更新到文字上
- 各文字放置在GUIObject m_ScoreGUIText中
- 透過關卡檔把script掛在場景上,只有教學關才掛。
所以其他關卡如果去access就找不到此物件 - 目前有
點選
控制面版
移動 - 每個教學都用 TimeTrigger 來控制教學的開啟與關閉
- 各項運作 會去存取此script 來達到強制關閉教學的功能
- 各事件的GUI對象也都是寫死是先創造好(非動態生成)
- 掛在 物件 GUI_EnergyManipulator 上
- 各調棒的資料結構
- 初始化會取得一次主角船資料
- 每次改變能源後會重新取得一次資料
- 顯示時才會更新GUI
- 可以由外界設定顯示或關閉
- RetrieveData() 取得主角船資料並同步調棒
- SyncSliderValue() 依照UnitData同步調棒的now與max
- TrySetValue() 設定能源數值到UnitData內
- OnGUI() 繪出能源調棒
- 使用 GUI.VerticalSlider
- 使用 GUI.VerticalScrollbar
- m_Sliders[ ].m_Value 的值都是絕對能源(是該部位總和量)
[System.Serializable] public enum EnergySliderType { EnergyManipulatorSymbol_Auxiliary , EnergyManipulatorSymbol_Weapon , EnergyManipulatorSymbol_Shield , EnergyManipulatorSymbol_Sensor , EnergyManipulatorSymbol_Engine , EnergyManipulatorSymbol_Max , }
- 描述調棒上的符號大小
- 調棒上的符號物件
- 描述調棒的大小
- m_Value 目前調棒的數值
- 能否被改變,影響到GUI使用的種類
- 預設沒有掛上物件需要特別呼叫掛上
- Setup() 設定倒數的時間
- 倒數結束會停留在0
- 顯示時使用 00:00 的格式
- 使用的GUI物件 GUI_CountDownTimeText
- 預設沒有掛上物件需要特別呼叫掛上
- Setup() 啟動開始記數
- 顯示時使用 00:00 的格式
- 使用的GUI物件 GUI_CountDownTimeText
- 由於挑戰關卡1與一般關卡不同,需要有特殊的管理器來管理
- 一般敵艦的產生
- 波士敵艦的產生與消滅
- 黑洞播放完畢進入真正的第九關
- 自GlobalSingleton.m_AcknowledgementGUIOBjectName取得參數播放該物件
- 結束時進入指定關卡
- 有播放才顯示SKIP按鈕
- 檢查此關卡圖片是否需要顯示
- 掛載在挑選關卡場景的關卡圖片物件上
- 其中會傳入 的指定字串 向 PlayerPrefs 取得是否已經玩過 來決定本關是否要開啟.
- 同時會控制此物件及其下物件的顯示
- 注意!! 指定字串為 前一關的關卡名稱 Level01_XXX 需與GameObject一致
- 如果必顯示,則不填。
- m_Language 語言參數
- 設定到 ResourceLoad
- 設定到 PlayerPrefs
- 重新讀取語言檔案 StrsManager
- 點擊 GUI_UnitDataSelection_Active 的反應
- 清除主角的部位點選
- 關閉自己
- 點擊 GUI_UnitDataSelection_UnActive 的反應
- m_SelectName 紀錄目前點選到的部件名稱 並傳送給 主角的 UnitSelectionSystem
- m_ChildActive 取得Active的GUIObject
- 顯示m_ChildActive
- 掛載在GUITexture物件上
- 會依據目前平台來決定開啟方式
- 如果是網頁平台就開啟新的視窗
- 如果是本機平台就直接開啟指定URL
- 使用 timer m_ClickTimer 檢查click
- 如點選就設定資訊 m_IsClick
- 由外界來取得該資訊
- m_ClickReset 是否重置(預設為true)
- 重置就會清空 GlobalSingleton.m_CustomActive 為false(使用關卡設定的主角船)
- 如果不重置,就會直接設定GlobalSingleton.m_CustomActive 為真(確保挑戰關卡正確創造主角船)
- 按下後開啟關卡(目前進入感謝場景)
- 依照物件名稱來決定關卡字串
設定在 GlobalSingleton.m_LevelString 上 - 掛載在選擇關卡場景的關卡圖片上
- 有緩衝時間,當物件顯示後一段時間才可以按.
- 寫入關卡已被遊玩的設定
- 注意 寫入字串為 物件名稱的 第二段 也就是
GUI_SelectScene:Level01_Tutorial 的 Level01_Tutorial - m_SetAcknoledgeGUIObjeName 是否要啟動感謝GUIObject
會寫入 GlobalSingleton.m_AcknowledgementGUIOBjectName - 目前進入感謝場景(如沒有感謝物則繼續到戰場)
- 點擊產生單位及UnitDataGUI
- 用在選擇主角船的頁面
- 按鈕後會依據參數產生單位即相對應的UnitDataGUI
- 仰賴特製的 關卡產生器 SelectShipLevelGenerator
- 仰賴 GUIUpdate
- 參數
- m_PrefabName 船隻的prefab參數
- m_UnitDataName 船隻的unit data參數
- m_RaceName 船隻的種族 (目前用不到)
- m_SideName 船隻的陣營 (目前用不到)
- 點選後會將資料記錄在 GlobalSingleton 中
- GlobalSingleton.m_CustomActive 的啟動是由選擇模式的 ClickOnGUI_ResetShipCustom.cs 來設定
- 顯示點選的紅點及正確位置
- 因為必須切換顯示對應關卡所以必須先關閉所有的關卡
- 只開啟對應的關卡
- 依照本物件的字串組合出關卡的物件字串
string GameObjectName = “GUI_SelectScene:” + levelString ;
- 因為特殊的面板只有蓋到 Phaser跟Torpedo所以不需要記錄 牽引光束面版
- 必須紀錄 幾種物件
- 一般 Control Panel Active
- 一般 Control Panel Unactive
- 特殊 Control Panel Active
- 特殊 Control Panel Unactive
- SwitchControlPanelToSpecialMode() 指定模式
- 切換一般模式
關閉特殊模式的面版 - 切換特殊模式
關閉一般模式
只開啟特殊的UnActive
- 切換一般模式
- SwitchControlPanelSpecialMode() 切換
切換主角的 controller.m_SpecialModeNow 為+1
- 點選後切換能源模組顯示與否
- 切換後切換鈕會變色跟換位置
- EnableEnergyManipulator() 切換到指定狀態:開或關
- SwitchEnergyManipulator() 呼叫 GUI_EnergyManipulator 切換開或關
- 開啟時預設為關
- m_ControlGUIObjectName 控制的另一個GUI物件名稱
- 切換時按鈕會移動及變色
- EnableMiniMap() 開啟小地圖與否
- SwitchMiniMap() 切換小地圖開啟
- 預設是關閉
- 依照是否是主角部件來向 GUIUpdate 取得不同的background object
- 控制的部件集合background object 將其下所有物件都切換顯示
- 切換時切換顏色
- 此功能是當遊戲中途中斷,要返回的目標場景
- 目前掛載在主選單的離開戰鬥按鈕上
- 會依照目前是否有設定 GlobalSingleton.m_InformationSceneEnd 來決定返回的場景名稱
- 若沒有設定就返回 警告頁面 Scene_Warning 重新開始
- 點擊後關閉並停止 UsualEventManagerObject 音效播放
- 掛載在目標事件的牌卡上
- 關閉此GUI物件
- 關閉UsualEventManager物件的音效播放
- 目前關閉中
- 點擊後前往人才徵募頁面
創造時自動找到 GUICamera 掛上Parent.
- 掛載在控制面版(彩色)的牌卡上
- 當按下左鍵時啟動或關閉功能
- 如果沒有點選(啟動)就離開 滑鼠離開時也會自動關閉
- 沒點選時 檢查滑鼠不在 強制關閉(上步驟的保險措施)
- 掛載在功能面版(灰)的牌卡上
- 當滑鼠移入牌卡時開啟對應的功能面版(彩色)
- 同時會呼叫 功能面版(彩色)上的 ControlPanelActive 重置狀態為初始化
繪出小地圖
依照玩家的感測系統來更新小地圖
其中玩家物件是獨立創造出來(一次)
其他的物件則是根據玩家感測系統更新
小地圖物件都存在容器中 m_MiniMapUnits
- 更新內容如下
- CheckMinimapSize() 檢查小地圖是否需要調整範圍
- CheckForRemove() 檢查是否需要移除小地圖物件
- RemoveUnitInMinimap() 真正移除需要移除的物件
- CheckForAdd() 檢查增加小地圖物件
- UpdatePos() 更新所有小地圖物件的位置
- CreateAMiniMapObj() 產生一個小地圖物件
感測系統會定期檢查單位周圍的單位
而小地圖只取得玩家的感測系統來更新小地圖
- m_RefreshTimer 更新週期請參考 BaseDefine.DRAW_MINIMAP_REFRESH_SEC
- GenerateMiniMapForMainCharacter() 額外產生主角的物件(不是透過感測器產生)
- Key 單位名稱
- 單位物件
- 小地圖物件
(目前沒有使用)
用一個偵測區域來做
不能用mouse over (因為會被蓋住)
注意進入與離開的範圍不同
- 由GUI物件的顯示與否來決定
- 顯示時取得目前控制器設定,並關閉之
- 結束顯示時回復其設定。
讀檔( version.txt )並顯示檔案內的字串
注意,顯示了之後此物件不會隨著關卡讀取而消失.
- 依照狀態進行淡入淡出
public enum FadeState
{
UnActive = 0 ,
FadeIn ,
Steady ,
FadeOut ,
End ,
}
- 同時對物件其下的GUITexture與GUIText作用
- 可以設定時間
- 可以設定是否要淡入淡出
- 如果要淡入,則開始時不顯示,淡入時才顯示
- 如果要循環 設定 m_IsLoop
- 檔案路徑 m_Filepath = “ResourceLocations.txt” ;
- 讀入之後使用\n來分段,並且設定給 GUI_TextParagraph
- 更新MouseCursor的顯示及貼圖
- 玩家無功能的情形下不顯示貼圖
- 玩家無功能但是有在一個單位(滑鼠座標)上,
- 如果沒有鎖定該單位,顯示黑框並有放大縮小動畫
- 如果已經鎖定該單位,不顯示貼圖
- 如果有功能,則顯示對應的貼圖
- 如果有功能,且滑鼠在一個單位上,則有放大縮小動畫
- IsOverUnit() 滑鼠是否在MainUpdate已知的單位上
- IsSelection() 傳入字串是否是已經被選擇的單位
- ResetAnimationSize() 重置滑鼠游標動畫
- AnimationResize() 進行滑鼠游標動畫
- 注意圖片一定要對準物件的座標中心
- m_StandardSize 標準大小
- m_SizeNow 目前大小
- m_MaximumSize 最大大小
- m_Direction 縮放速度
- 繼承 GUI_ResizeTexture
- 會依據指定的索引值向 StrsManager 取得文字內容
- 每次顯示時都會檢查一次
- GUI_RetrieveTextAtEnable 的陣列版,索引值必須指定為陣列形式
- 會依據目前取得的GUIText來複製其文字格式
- 減緩不代表停止,此時的參數是希望遊戲依然進行,參數請參考 BaseDefine.SLOWMOTION_SCALE_IN_TIME
- GUITexture結束顯示時就會回復,正常運行的時間參數是 1.0 請參考 BaseDefine.NORMAL_SCALE_IN_TIME
- GUITexture顯示時就會設定其減緩。
- 會依據目前的文字節點來複製其格式
- 目前的預設值是警告頁面的文字,還未分離
- m_ActiveInStart 是否開始時連帶啟動,需先設定好文字
- m_StrArray 文字陣列
- m_ActiveAnimation 是否要有動畫
- m_AnimationSpeed 動畫的方向速度
- m_ActiveUpperBound 動畫是否有上限的限制
- m_ExceedUpperBound 超過上限的長度
- m_AutoDetectAnimatinMax 是否自動偵測動畫的長度及結束
- m_AnimationMaximum 動畫的長度
- m_ChildList 產生出來的文字物件
- 血量條是每個單位有一份
- 使用樣板名稱 Template_GUI_Ship_ShipIntagraty
- 在創造單位時 建立 與船隻名稱雷同的物件
- 物件名稱為 [UnitObjectName]:GUI_Ship_UnitIntagraty
- 依照單位的血量更新GUI的長度
- 此腳本掛在單位上。讓血調隨著單位創造建立。
- 此腳本隨著單位摧毀時,同時摧毀血條物件。
- 血條的部件名稱是"UnitIntagraty"
- 透過GUITexture的顯示隱藏來運作
- m_Show 啟動與否
- 當未啟動時 偵測到顯示 就開始倒數
- 倒數結束就隱藏
目前掛載在廣告流程
- 會使用物件的位置來決定範圍
- 會使用GUITexture的pixelInset來決定範圍
- 必須指定GUI_HideInSec所在物件
目前掛載在 關卡2的牌卡上
目前客製化
控制物件是 GUI_MessageCard_KlingonStyleLink
- 掛在 HP 與 Label 上
- 更新 選擇部位選擇框的位置及顯示
- 掛載在 ReloadCompletenessAnimator 物件下
- UnitDataGUI 武器的填充完畢的動畫 管理器
- Setup() 呼叫時新增指定的單位及部件,然後透過GUIUpdate找到指定的UnitDataGUI的物件名稱做為索引放到m_AnimationMap中
- 播放完畢就移除
- CONST_AlertFontSize 警告的大小
- CONST_NormalFontSize 正常的大小
- CONST_ElapsedSecSteady 穩定的經過時間
- CONST_ElapsedSecTotal 總共的經過時間
- m_ReloadCompleteAudio 播放的聲音
- CONST_VibrationDistance 震動大小
- CONST_VibrationSec 震動秒數
- m_VibrationMap 震動的動畫軌,以介面的物件名稱做為索引
- SetupVibration() 設定介面物件震動,需要傳入單位與部件名稱
- UpdateVibration() 更新各動畫軌的震動與移除
- SetPosition() 設定物件的2D位置