public void Init(int mapID) { resSvc = ResSvc.Instance; audioSvc = AudioSvc.Instance; //初始化各个管理器 stateMgr = gameObject.AddComponent <StateMgr>(); stateMgr.Init(); skillMgr = gameObject.AddComponent <SkillMgr>(); skillMgr.Init(); //加载战场地图 MapCfgs mapData = resSvc.GetMapCfgData(mapID); resSvc.AsyncLoadScene(mapData.sceneName, () => { //初始化地图数据 GameObject map = GameObject.FindGameObjectWithTag("MapRoot"); mapMgr = map.GetComponent <MapMgr>(); mapMgr.Init(); //初始化地图位置和摄像机位置 map.transform.localPosition = Vector3.zero; map.transform.localScale = Vector3.zero; Camera.main.transform.position = mapData.mainCamPos; Camera.main.transform.localEulerAngles = mapData.mainCamRote; LoadPlayer(mapData); audioSvc.PlayBGMusic(Constants.BGHuangYe); entityPlayer.Idle(); }); }
public void EnterMainCity() { //获取主城数据 MapCfgs mapCfgs = resSvc.GetMapCfgData(Constants.MainCityMapID); LoginSys.Instance.createWnd.SetWndState(false); resSvc.AsyncLoadScene(mapCfgs.sceneName, () => { //打开主城场景UI mainCityWnd.SetWndState(); //加主城音乐 audioSvc.PlayBGMusic(Constants.BGMainCity); GameObject map = GameObject.FindGameObjectWithTag("MapRoot"); MainCityMap mcm = map.GetComponent <MainCityMap>(); npcPosTrans = mcm.NpcPosTrans; //加载主角 LoadPlayer(mapCfgs); //人物相机设置 if (camTrans != null) { camTrans.gameObject.SetActive(false); } }); }
private void LoadPlayer(MapCfgs mapData) { GameObject player; player = resSvc.LoadPrefab(PathDefine.AssissnCityPlayerPrefab, true); player.transform.position = mapData.playerBornPos; player.transform.localEulerAngles = mapData.playerBornRote; //设置大小 player.transform.localScale = new Vector3(1.5f, 1.5f, 1.5f); //相机初始化 Camera.main.transform.position = mapData.mainCamPos; Camera.main.transform.localEulerAngles = mapData.mainCamRote; playeController = player.GetComponent <PlayerController>(); playeController.Init(); nav = player.GetComponent <NavMeshAgent>(); }
public void LoadPlayer(MapCfgs mapData) { GameObject player = resSvc.LoadPrefab(PathDefine.ASsissnBattlePlayerPrefab); player.transform.position = mapData.playerBornPos; player.transform.localEulerAngles = mapData.playerBornRote; player.transform.localScale = Vector3.one; //实例化一个逻辑实体 entityPlayer = new EntityPlayer(); //注入状态管理器 entityPlayer.stateMgr = stateMgr; //初始化角色控制器 PlayerController playerCtrl = player.GetComponent <PlayerController>(); playerCtrl.Init(); entityPlayer.controller = playerCtrl; }
private void InitMapsCfgs(string path) { TextAsset xml = Resources.Load <TextAsset>(path); if (!xml) { Debug.LogError("Xml file:" + path + "加载失败,请检查文件是否正确"); } else { //建立一个XML XmlDocument doc = new XmlDocument(); //读取XML内容 doc.LoadXml(xml.text); //读取root下的子节点 成为一个队列 XmlNodeList nodLst = doc.SelectSingleNode("root").ChildNodes; //读取节点数据 for (int i = 0; i < nodLst.Count; i++) { XmlElement ele = nodLst[i] as XmlElement; if (ele.GetAttributeNode("ID") == null) { continue; } int ID = Convert.ToInt32(ele.GetAttributeNode("ID").InnerText); MapCfgs mc = new MapCfgs { ID = ID }; foreach (XmlElement e in nodLst[i].ChildNodes) { switch (e.Name) { case "mapName": mc.mapName = e.InnerText; break; case "sceneName": mc.sceneName = e.InnerText; break; case "power": mc.power = int.Parse(e.InnerText); break; case "mainCamPos": string[] valArr = e.InnerText.Split(','); mc.mainCamPos = new Vector3(float.Parse(valArr[0]), float.Parse(valArr[1]), float.Parse(valArr[2])); break; case "mainCamRote": string[] valArr1 = e.InnerText.Split(','); mc.mainCamRote = new Vector3(float.Parse(valArr1[0]), float.Parse(valArr1[1]), float.Parse(valArr1[2])); break; case "playerBornPos": string[] valArr2 = e.InnerText.Split(','); mc.playerBornPos = new Vector3(float.Parse(valArr2[0]), float.Parse(valArr2[1]), float.Parse(valArr2[2])); break; case "playerBornRote": string[] valArr3 = e.InnerText.Split(','); mc.playerBornRote = new Vector3(float.Parse(valArr3[0]), float.Parse(valArr3[1]), float.Parse(valArr3[2])); break; default: break; } } mapCfgsDict.Add(ID, mc); } } }