void Update() { if (dataLoadOver) { //根据按键更新showGUI if (Input.GetKeyDown(switchGUIKey)) { showGUI = !showGUI; } //根据showGUI更新GUI的显示 if (showGUI && !ui_StarMapToolsBasePanel.activeSelf || !showGUI && ui_StarMapToolsBasePanel.activeSelf) { ui_StarMapToolsBasePanel.SetActive(!ui_StarMapToolsBasePanel.activeSelf); } //核心内容 if (showGUI) { //判断是否处于新建游戏的状态 if (UIRoot.instance.galaxySelect.starmap.galaxyData != null) { if (SearchNext) { LoadResAmount.isOn = false; UIRoot.instance.galaxySelect.Rerand(); } //更新数据 if (galaxy != UIRoot.instance.galaxySelect.starmap.galaxyData) { TitleText.text = "新游戏模式"; galaxy = UIRoot.instance.galaxySelect.starmap.galaxyData; StarList.ClearOptions(); ResultList.ClearOptions(); foreach (StarData star in galaxy.stars) { StarList.options.Add(new Dropdown.OptionData(star.name)); } StarList.value = -1; StarList.RefreshShownValue(); if (SearchNext) { SearchButton.onClick.Invoke(); } } } //判断是否处于游戏中 else if (GameMain.galaxy != null) { SearchNext = false; //更新数据 if (galaxy != GameMain.galaxy) { TitleText.text = "读档模式"; galaxy = GameMain.galaxy; StarList.ClearOptions(); ResultList.ClearOptions(); foreach (StarData star in galaxy.stars) { StarList.options.Add(new Dropdown.OptionData(star.name)); } StarList.value = -1; StarList.RefreshShownValue(); } //传送功能 if (Input.GetKeyDown(tpKey)) { object target = galaxy.StarById(StarList.value + 1); GameMain.data.ArriveStar((StarData)target); if (PlanetList.value > 0) { target = ((StarData)target).planets[PlanetList.value - 1]; } StartCoroutine(wait(target)); } } //等待数据加载 else if (TitleText.text != "等待数据") { TitleText.text = "等待数据"; StarList.ClearOptions(); PlanetList.ClearOptions(); ResultList.ClearOptions(); InfoText.text = ""; SearchNext = false; } if (loadingStarData) { var star = galaxy.StarById(StarList.value + 1); if (star.loaded || !LoadResAmount.isOn) { loadingStarData = false; } PlanetList.value = -1; PlanetList.RefreshShownValue(); } } } //加载数据 else if (UIRoot.instance.overlayCanvas.transform != null && GameMain.instance != null) { //加载UI ui_StarMapToolsBasePanel = GameObject.Instantiate(prefab_StarMapToolsBasePanel, UIRoot.instance.overlayCanvas.transform); ui_StarMapToolsBasePanel.transform.Find("TitleText").gameObject.AddComponent <Drag>(); ui_StarMapToolsBasePanel.SetActive(false); //获取控件 TitleText = ui_StarMapToolsBasePanel.transform.Find("TitleText").GetComponent <Text>(); StarList = ui_StarMapToolsBasePanel.transform.Find("StarList").GetComponent <Dropdown>(); PlanetList = ui_StarMapToolsBasePanel.transform.Find("PlanetList").GetComponent <Dropdown>(); InfoText = ui_StarMapToolsBasePanel.transform.Find("InfoText").GetComponent <InputField>(); LoadResAmount = ui_StarMapToolsBasePanel.transform.Find("LoadResAmount").GetComponent <Toggle>(); OptionsList = ui_StarMapToolsBasePanel.transform.Find("OptionsList").GetComponent <ScrollRect>(); SearchNextToggle = ui_StarMapToolsBasePanel.transform.Find("SearchNextToggle").GetComponent <Toggle>(); DysonLuminoText = ui_StarMapToolsBasePanel.transform.Find("DysonLuminoText").GetComponent <InputField>(); DistanceText = ui_StarMapToolsBasePanel.transform.Find("DistanceText").GetComponent <InputField>(); ResultList = ui_StarMapToolsBasePanel.transform.Find("ResultList").GetComponent <Dropdown>(); SearchButton = ui_StarMapToolsBasePanel.transform.Find("SearchButton").GetComponent <Button>(); var TempToggle = OptionsList.content.Find("TempToggle").GetComponent <Toggle>(); //获取数据 var TempStarTypes = starSearcher.AllStarTypes; var TempPlanteTypes = starSearcher.AllPlanteTypes; var TempSingularityTypes = starSearcher.AllSingularityTypes; var TempVeinTypes = starSearcher.AllVeinTypes; //各种选项的列表 var StarTypesToggleList = new List <Toggle>(); var PlanteTypesToggleList = new List <Toggle>(); var SingularityTypesToggleList = new List <Toggle>(); var VeinTypesToggleList = new List <Toggle>(); //实例化 for (int i = 0; i < TempStarTypes.Count; i++) { var toggle = GameObject.Instantiate <Toggle>(TempToggle, TempToggle.transform.parent).GetComponent <RectTransform>(); toggle.Find("Label").GetComponent <Text>().text = TempStarTypes[i]; toggle.GetComponent <Toggle>().isOn = true; toggle.anchorMax = new Vector2((float)0.25, (float)(1 - i * 0.1)); toggle.anchorMin = new Vector2(0, (float)(1 - (i + 1) * 0.1)); toggle.gameObject.SetActive(true); StarTypesToggleList.Add(toggle.GetComponent <Toggle>()); } for (int i = 0; i < TempPlanteTypes.Count; i++) { var toggle = GameObject.Instantiate <Toggle>(TempToggle, TempToggle.transform.parent).GetComponent <RectTransform>(); toggle.Find("Label").GetComponent <Text>().text = TempPlanteTypes[i]; toggle.anchorMax = new Vector2((float)0.5, (float)(1 - i * 0.1)); toggle.anchorMin = new Vector2((float)0.25, (float)(1 - (i + 1) * 0.1)); toggle.gameObject.SetActive(true); PlanteTypesToggleList.Add(toggle.GetComponent <Toggle>()); } for (int i = 0; i < TempSingularityTypes.Count; i++) { var toggle = GameObject.Instantiate <Toggle>(TempToggle, TempToggle.transform.parent).GetComponent <RectTransform>(); toggle.Find("Label").GetComponent <Text>().text = TempSingularityTypes[i]; toggle.anchorMax = new Vector2((float)0.75, (float)(1 - i * 0.1)); toggle.anchorMin = new Vector2((float)0.5, (float)(1 - (i + 1) * 0.1)); toggle.gameObject.SetActive(true); SingularityTypesToggleList.Add(toggle.GetComponent <Toggle>()); } for (int i = 0; i < TempVeinTypes.Count; i++) { var toggle = GameObject.Instantiate <Toggle>(TempToggle, TempToggle.transform.parent).GetComponent <RectTransform>(); toggle.Find("Label").GetComponent <Text>().text = TempVeinTypes[i]; toggle.anchorMax = new Vector2(1, (float)(1 - i * 0.1)); toggle.anchorMin = new Vector2((float)0.75, (float)(1 - (i + 1) * 0.1)); toggle.gameObject.SetActive(true); VeinTypesToggleList.Add(toggle.GetComponent <Toggle>()); } //切换恒星事件 StarList.onValueChanged.AddListener(delegate { PlanetList.ClearOptions(); if (StarList.value >= 0 && StarList.value < galaxy.starCount) { var star = galaxy.StarById(StarList.value + 1); if (LoadResAmount.isOn && UIRoot.instance.galaxySelect.starmap.galaxyData != null && !star.loaded) { star.Load(); } PlanetList.options.Add(new Dropdown.OptionData("恒星")); foreach (PlanetData planet in star.planets) { PlanetList.options.Add(new Dropdown.OptionData(planet.name)); } PlanetList.value = -1; PlanetList.RefreshShownValue(); } }); //切换星球事件 PlanetList.onValueChanged.AddListener(delegate { var star = galaxy.StarById(StarList.value + 1); if (PlanetList.value > 0 && PlanetList.value <= star.planetCount) { var planet = star.planets[PlanetList.value - 1]; var info = planet.name + "的信息:\n"; info += "词条:" + planet.singularityString + "\n";//词条 info += "类型:" + planet.typeString + "\n"; string waterType = "未知"; switch (planet.waterItemId) { case -1: waterType = "熔岩"; break; case 0: waterType = "无"; break; default: waterType = LDB.ItemName(planet.waterItemId); break; } info += "海洋类型:" + waterType + "\n"; if (planet.type != EPlanetType.Gas && planet.veinSpotsSketch != null) { info += "矿物信息:" + "\n"; for (int i = 0; i < LDB.veins.Length; i++) { var name = LDB.veins.dataArray[i].name; object amount = planet.veinAmounts[i + 1]; if (planet.veinSpotsSketch[i + 1] == 0) { amount = "无"; } else if ((long)amount == 0) { if (!LoadResAmount.isOn) { amount = "有"; } else if (UIRoot.instance.galaxySelect.starmap.galaxyData != null) { amount = "正在加载"; loadingStarData = true; } else { amount = "未加载,靠近后显示"; } } else if (i + 1 == 7) { amount = (long)amount * (double)VeinData.oilSpeedMultiplier + " /s"; } info += " " + name + ":" + amount + "\n"; } } InfoText.text = info; } else if (PlanetList.value == 0) { var info = star.name + "星系的信息:" + (loadingStarData?"正在加载":"") + "\n"; info += "恒星类型:" + star.typeString + "\n"; info += "星球数量:" + star.planetCount + "\n"; info += "光度:" + star.dysonLumino.ToString() + "\n"; info += "距离初始星系恒星:" + ((star.uPosition - galaxy.StarById(1).uPosition).magnitude / 2400000.0).ToString() + "光年\n"; info += "星球列表:"; foreach (PlanetData planet in star.planets) { info += "-" + planet.typeString + " " + planet.singularityString; } info += "\n矿物信息:" + "\n"; for (int i = 0; i < LDB.veins.Length; i++) { var name = LDB.veins.dataArray[i].name; object amount = star.GetResourceAmount(i + 1); if (star.GetResourceSpots(i + 1) == 0) { amount = "无"; } else if ((long)amount == 0) { if (!LoadResAmount.isOn) { amount = "有"; } else if (UIRoot.instance.galaxySelect.starmap.galaxyData != null) { amount = "正在加载"; loadingStarData = true; } else { amount = "未加载,靠近后显示"; } } else if (i + 1 == 7) { amount = (long)amount * (double)VeinData.oilSpeedMultiplier + " /s"; } info += " " + name + ":" + amount + "\n"; } InfoText.text = info; } }); //搜索事件 SearchButton.onClick.AddListener(delegate { SearchNext = false; starSearcher.galaxyData = galaxy; starSearcher.Clear(); float.TryParse(DysonLuminoText.text == "" ? "0":DysonLuminoText.text, out starSearcher.dysonLumino); float.TryParse(DistanceText.text == ""?"1000": DistanceText.text, out starSearcher.distance); foreach (Toggle toggle in StarTypesToggleList) { if (toggle.isOn) { var typeString = toggle.transform.Find("Label").GetComponent <Text>().text; starSearcher.StarTypes.Add(typeString); } } foreach (Toggle toggle in PlanteTypesToggleList) { if (toggle.isOn) { var typeString = toggle.transform.Find("Label").GetComponent <Text>().text; starSearcher.PlanteTypes.Add(typeString); } } foreach (Toggle toggle in SingularityTypesToggleList) { if (toggle.isOn) { var typeString = toggle.transform.Find("Label").GetComponent <Text>().text; starSearcher.SingularityTypes.Add(typeString); } } foreach (Toggle toggle in VeinTypesToggleList) { if (toggle.isOn) { var typeString = toggle.transform.Find("Label").GetComponent <Text>().text; starSearcher.VeinTypes.Add(typeString); } } SerachResult = starSearcher.Search(); ResultList.ClearOptions(); foreach (StarData star in SerachResult) { ResultList.options.Add(new Dropdown.OptionData(star.name)); } ResultList.value = -1; ResultList.RefreshShownValue(); if (SerachResult.Count == 0 && SearchNextToggle.isOn) { SearchNext = true; } }); //切换搜索结果事件 ResultList.onValueChanged.AddListener(delegate { StarList.value = SerachResult[ResultList.value].index; StarList.RefreshShownValue(); }); dataLoadOver = true; } }