Skip to content
NDark edited this page Feb 15, 2013 · 2 revisions

功能清單

{{toc}}

關卡讀檔 LevelGenerator.cs

說明

  1. 進入關卡場景後,再依照目前的關卡關鍵字去取得關卡檔,然後再把關卡使用動態的方式建立起來。
  2. 關卡關鍵字目前有兩種指定方式
    1. Debug_UseGlobalSingletonLevelString 開啟情形下(預設),向 GlobalSingleton取得。而GlobalSingleton是由選擇關卡場景所設定。
    2. Debug_UseGlobalSingletonLevelString 關閉情形下,直接使用原本設定值,方便直接開啟關卡,方便除錯。
  3. 目前有五大資料檔要讀取
    1. 關卡表 LevelTable.xml
    2. 單位樣版檔 UnitTable.xml
    3. 元件參數檔 ComponentParamTable.xml
    4. 武器參數檔 WeaponParamTable.xml
    5. 真正開啟的關卡檔

參考資料

  1. LevelGenerateStruct.cs

初始化

  1. LoadComponentParamTable() load component param table
  2. LoadWeaponParamTable() load weapon param table
  3. LoadUnitTemplateTable() 讀入單位樣本表格
    儲存單位樣本 UnitTemplateData 的所有資訊.
    每次單位要產生時就把單位樣本的資料複製到物件上
    每個 單位樣板資料 包含
    樣板名稱
    開啟/加入元件名稱
    標準資料清單
    單位部件清單
    呼叫 ParseUnitTemplateData()
  4. LoadLevelTable() 讀入關卡清單
    節點
  5. RetrieveLevelIndex() 取得正確的關卡索引字串
    從 GlobalSingleton.m_LevelString 取得設定到 levelString
    如果 Debug_UseGlobalSingletonLevelString 關閉 則會用使用者設定的字串
  6. LoadLevelAccordingToIndexofLevel() 依據索引讀入正確的關卡參數檔
    其中每個單位是以 單位初始資料的 資料結構組成
    每筆 單位初始資料 UnitInitializationData 包含 單位名稱 樣板名稱 初始位置 初始轉向
    呼叫 ParseUnitInitData() 分析XML 取出每筆單位的資料
    存入 levelUnitInitializationTable[] 中
    注意目前的位置指定與 BackgroundObj 的縮放及大小有絕對關係。
    位置的指定可以用 重生點 也可以指定絕對位置
  7. GenerateAllUnitsInThisLevel() 依照讀入的資料建立本關單位
    注意目前關卡檔產生出來的敵人單位也要列入勝負判定的表格中。
    未來勝負判定模組化時再行調整。
    呼叫 GenerateUnit() 來創造單位
    其中除了具現化單位之外 還要指定初始位置旋轉 自unitTemplateTable[]中複製對應的單位資料
    單位產生後呼叫 GUI_Unit_Update() 來確實產生血條物件
  8. CheckCustomMainCharacter() 產生客製化的主角船艦
  9. GenerateAllVictoryConditionInThisLevel() 產生勝負條件
  10. GenerateEnemyGenerationInThisLevel() 產生單位產生事件
  11. GenerateUsualEvnetInThisLevel() 產生一般事件
  12. CreateMainCharacterUnitDataGUI() 單位產生完畢後產生玩家的UnitData GUI
    Create Main Character Unit Data GUI after all unit been created.

資料結構

UnitInitializationData 單位初始資料

  1. unitName 單位名稱
  2. templateName prefab樣板名稱
  3. unitDataTemplateName 單位資料樣板名稱
  4. raceName 種族名稱(小地圖標示)
  5. sideName 陣營名稱
  6. initPosition 初始位置
  7. initOrientation 初始轉向
  8. supplementalVec 補充資料

UnitGenerationData 單位動態產生資料

  1. 繼承 UnitInitializationData
  2. 新增 變數

    public float time = 0.0f ;

UnitTemplateData 儲存單位樣版資料

  1. unitDataTemplateName 樣板名稱
  2. unitDataGUITextureName 使用的GUI貼圖名稱
  3. m_AddComponentList 開啟/加入元件名稱
  4. m_standardParameters 標準資料清單
  5. unitComponents 單位部件清單
  6. unitDisplayNameIndex 顯示名稱的索引

重點說明

  1. ParseComponent() 分析XML
  2. ParseUnitTemplateData() 分析XML
    call ParseComponent()
    call ParseStandardParameter()
  3. ParseVictoryCondition() 分析XML 勝利條件
    存到 levelVictoryConditonTable
  4. ParseLoseCondition() 分析XML 失敗條件
    存到 levelLoseConditonTable
  5. ParseUsualEvent() 分析XML 創造一般事件

SelectShipLevelGenerator 選擇船艦時的關卡讀檔

  1. 是一個簡易版本的讀檔
  2. 沒有建出場景,僅讀入基本設定資料
  3. 目前使用與LevelGenerator相同的程式碼
Clone this wiki locally