public void CreateMapEvent <T, S>(MapEvent pData, LevelRegion pRegion, LevelContainerBase <T> pHolder, List <S> pElemDataList) where T : LevelElement where S : MapElement { T tElement = null; if (pData.Active) { for (int i = 0; i < pElemDataList.Count; i++) { if (pElemDataList[i].Id == pData.Id) { tElement = pHolder.AddElement(); tElement.Import(pElemDataList[i], false); if (tElement is LevelWaveSet) { LevelWaveSet waveset = tElement as LevelWaveSet; waveset.Region = pRegion; } tElement.Init(); } } } else { tElement = pHolder.FindElement(pData.Id); if (tElement != null) { DestroyImmediate(tElement.gameObject); } } }
public override void OnInspectorGUI() { LevelWaveSet pElem = target as LevelWaveSet; int pId = EditorGUILayout.IntField("Id", pElem.Id); if (pElem.Id != pId) { pElem.Id = pId; pElem.SetName(); } if (GUILayout.Button("添加波次")) { LevelWave pWave = pElem.AddElement(); } }
private void Import() { LevelComponent levelCom = target as LevelComponent; levelCom.transform.DestroyChildren(); levelCom.InitHolder(); string fsPath = AssetUtility.GetLevelConfigAsset(levelCom.LevelID.ToString()); MapConfig data = new MapConfig(); data.EditorLoad(fsPath); levelCom.MapName = data.MapName; for (int i = 0; i < data.Regions.Count; i++) { LevelElement pHolder = levelCom.GetHolder(MapHolderType.Region); GameObject go = pHolder.gameObject.AddChild(); LevelRegion pRegion = go.AddComponent <LevelRegion>(); pRegion.Import(data.Regions[i], true); } for (int i = 0; i < data.Barriers.Count; i++) { LevelElement pHolder = levelCom.GetHolder(MapHolderType.Barrier); GameObject go = pHolder.gameObject.AddChild(); LevelBarrier pBarrier = go.AddComponent <LevelBarrier>(); pBarrier.Import(data.Barriers[i], true); } for (int i = 0; i < data.WaveSets.Count; i++) { LevelElement pHolder = levelCom.GetHolder(MapHolderType.WaveSet); GameObject go = pHolder.gameObject.AddChild(); LevelWaveSet pWaveSet = go.AddComponent <LevelWaveSet>(); pWaveSet.Import(data.WaveSets[i], true); } for (int i = 0; i < data.MonsterGroups.Count; i++) { LevelElement pHolder = levelCom.GetHolder(MapHolderType.MonsterGroup); GameObject go = pHolder.gameObject.AddChild(); LevelMonsterGroup pGroup = go.AddComponent <LevelMonsterGroup>(); pGroup.Import(data.MonsterGroups[i], true); } for (int i = 0; i < data.MineGroups.Count; i++) { LevelElement pHolder = levelCom.GetHolder(MapHolderType.MineGroup); GameObject go = pHolder.gameObject.AddChild(); LevelMineGroup pGroup = go.AddComponent <LevelMineGroup>(); pGroup.Import(data.MineGroups[i], true); } for (int i = 0; i < data.Portals.Count; i++) { LevelElement pHolder = levelCom.GetHolder(MapHolderType.Portal); GameObject go = pHolder.gameObject.AddChild(); LevelPortal pPortal = go.AddComponent <LevelPortal>(); pPortal.Import(data.Portals[i], true); } for (int i = 0; i < data.Npcs.Count; i++) { LevelElement pHolder = levelCom.GetHolder(MapHolderType.Npc); GameObject go = pHolder.gameObject.AddChild(); LevelNpc pNpc = go.AddComponent <LevelNpc>(); pNpc.Import(data.Npcs[i], true); } { LevelElement pHolder = levelCom.GetHolder(MapHolderType.Born); if (data.Ally != null) { GameObject gA = pHolder.gameObject.AddChild(); LevelBorn pBornA = gA.AddComponent <LevelBorn>(); pBornA.Import(data.Ally, true); } if (data.Enemy != null) { GameObject gB = pHolder.gameObject.AddChild(); LevelBorn pBornB = gB.AddComponent <LevelBorn>(); pBornB.Import(data.Enemy, true); } if (data.Neutral != null) { GameObject gC = pHolder.gameObject.AddChild(); LevelBorn pBornC = gC.AddComponent <LevelBorn>(); pBornC.Import(data.Neutral, true); } } Debug.Log("导入关卡数据:" + fsPath); }