public ED_ActorCom CreateActor(ActorCnf actorData) { ED_MapAreaCom areaCom = GetArea(); if (areaCom == null) { Debug.LogError("创建地图失败,没有区域!!!!"); return(null); } if (startUid > endUid) { Debug.LogError("此地图Uid已用完!!!!"); return(null); } ED_ActorCom actorCom = MapEditorDef.CreateActorGo(); actorCom.Init(CalcActorUid(), actorData.id, actorData.name, actorData.isPlayer, this); //预制体 if (actorData.prefab != null) { GameObject actorPrefab = (GameObject)PrefabUtility.InstantiatePrefab(actorData.prefab.GetObj()); MapEditorHelper.SetParent(actorPrefab.gameObject, actorCom.gameObject); } areaCom.AddActor(actorCom); return(actorCom); }
public List <ED_ActorCom> GetActors() { List <ED_ActorCom> actors = new List <ED_ActorCom>(); for (int i = 0; i < AreaRoot.transform.childCount; i++) { ED_MapAreaCom areaCom = AreaRoot.transform.GetChild(i).GetComponent <ED_MapAreaCom>(); if (areaCom != null) { actors.AddRange(areaCom.GetActors()); } } return(actors); }
public ED_MapTriggerCom CreateTrigger() { ED_MapAreaCom areaCom = GetArea(); if (areaCom == null) { Debug.LogError("创建地图失败,没有区域!!!!"); return(null); } Transform obsTrans = transform.Find("Prefab/TriggerArea"); GameObject newGo = Instantiate(obsTrans.gameObject); ED_MapTriggerCom triggerCom = newGo.GetComponent <ED_MapTriggerCom>(); areaCom.AddTrigger(triggerCom); return(triggerCom); }
public ED_MapAreaCom GetArea(int index = -1) { for (int i = 0; i < AreaRoot.transform.childCount; i++) { ED_MapAreaCom areaCom = AreaRoot.transform.GetChild(i).GetComponent <ED_MapAreaCom>(); if (areaCom != null) { if (index == i) { return(areaCom); } if (areaCom.gameObject.activeInHierarchy) { return(areaCom); } } } return(null); }
public MapModel ExportData() { MapModel mapData = new MapModel(); mapData.mapId = mapId; for (int i = 0; i < AreaRoot.transform.childCount; i++) { ED_MapAreaCom areaCom = AreaRoot.transform.GetChild(i).GetComponent <ED_MapAreaCom>(); if (areaCom != null) { AreaModel areaModel = (AreaModel)areaCom.ExportData(); areaModel.areaId = i; mapData.areas.Add(areaModel); } } //主角 mapData.mainActor = null; for (int i = 0; i < mapData.areas.Count; i++) { for (int j = 0; j < mapData.areas[i].actors.Count; j++) { if (mapData.areas[i].actors[j].isMainActor) { if (mapData.mainActor != null) { Debug.LogWarning($"具有多个主角>>>>>{mapData.areas[i].areaId}"); } mapData.mainActor = mapData.areas[i].actors[j]; mapData.areas[i].actors.RemoveAt(j); } } } return(mapData); }