コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
 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);
 }
コード例 #5
0
        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);
        }