-
Notifications
You must be signed in to change notification settings - Fork 1
LevelGenerator.cs
NDark edited this page Feb 15, 2013
·
2 revisions
{{toc}}
- 進入關卡場景後,再依照目前的關卡關鍵字去取得關卡檔,然後再把關卡使用動態的方式建立起來。
- 關卡關鍵字目前有兩種指定方式
- Debug_UseGlobalSingletonLevelString 開啟情形下(預設),向 GlobalSingleton取得。而GlobalSingleton是由選擇關卡場景所設定。
- Debug_UseGlobalSingletonLevelString 關閉情形下,直接使用原本設定值,方便直接開啟關卡,方便除錯。
- 目前有五大資料檔要讀取
- 關卡表 LevelTable.xml
- 單位樣版檔 UnitTable.xml
- 元件參數檔 ComponentParamTable.xml
- 武器參數檔 WeaponParamTable.xml
- 真正開啟的關卡檔
- LevelGenerateStruct.cs
- LoadComponentParamTable() load component param table
- LoadWeaponParamTable() load weapon param table
- LoadUnitTemplateTable() 讀入單位樣本表格
儲存單位樣本 UnitTemplateData 的所有資訊.
每次單位要產生時就把單位樣本的資料複製到物件上
每個 單位樣板資料 包含
樣板名稱
開啟/加入元件名稱
標準資料清單
單位部件清單
呼叫 ParseUnitTemplateData() - LoadLevelTable() 讀入關卡清單
節點 - RetrieveLevelIndex() 取得正確的關卡索引字串
從 GlobalSingleton.m_LevelString 取得設定到 levelString
如果 Debug_UseGlobalSingletonLevelString 關閉 則會用使用者設定的字串 - LoadLevelAccordingToIndexofLevel() 依據索引讀入正確的關卡參數檔
其中每個單位是以 單位初始資料的 資料結構組成
每筆 單位初始資料 UnitInitializationData 包含 單位名稱 樣板名稱 初始位置 初始轉向
呼叫 ParseUnitInitData() 分析XML 取出每筆單位的資料
存入 levelUnitInitializationTable[] 中
注意目前的位置指定與 BackgroundObj 的縮放及大小有絕對關係。
位置的指定可以用 重生點 也可以指定絕對位置 - GenerateAllUnitsInThisLevel() 依照讀入的資料建立本關單位
注意目前關卡檔產生出來的敵人單位也要列入勝負判定的表格中。
未來勝負判定模組化時再行調整。
呼叫 GenerateUnit() 來創造單位
其中除了具現化單位之外 還要指定初始位置旋轉 自unitTemplateTable[]中複製對應的單位資料
單位產生後呼叫 GUI_Unit_Update() 來確實產生血條物件 - CheckCustomMainCharacter() 產生客製化的主角船艦
- GenerateAllVictoryConditionInThisLevel() 產生勝負條件
- GenerateEnemyGenerationInThisLevel() 產生單位產生事件
- GenerateUsualEvnetInThisLevel() 產生一般事件
- CreateMainCharacterUnitDataGUI() 單位產生完畢後產生玩家的UnitData GUI
Create Main Character Unit Data GUI after all unit been created.
- unitName 單位名稱
- templateName prefab樣板名稱
- unitDataTemplateName 單位資料樣板名稱
- raceName 種族名稱(小地圖標示)
- sideName 陣營名稱
- initPosition 初始位置
- initOrientation 初始轉向
- supplementalVec 補充資料
- 繼承 UnitInitializationData
- 新增 變數
public float time = 0.0f ;
- unitDataTemplateName 樣板名稱
- unitDataGUITextureName 使用的GUI貼圖名稱
- m_AddComponentList 開啟/加入元件名稱
- m_standardParameters 標準資料清單
- unitComponents 單位部件清單
- unitDisplayNameIndex 顯示名稱的索引
- ParseComponent() 分析XML
- ParseUnitTemplateData() 分析XML
call ParseComponent()
call ParseStandardParameter() - ParseVictoryCondition() 分析XML 勝利條件
存到 levelVictoryConditonTable - ParseLoseCondition() 分析XML 失敗條件
存到 levelLoseConditonTable - ParseUsualEvent() 分析XML 創造一般事件
- 是一個簡易版本的讀檔
- 沒有建出場景,僅讀入基本設定資料
- 目前使用與LevelGenerator相同的程式碼