using System.Collections.Generic; using Excel2Json; using Fort23.Core; using Fort23.UTool; using GameLogic.Bag; using UnityEngine; using UnityEngine.UI; namespace Fort23.Mono { public static class HeroUITools { public static object[] GetSkillParam(SkillConfig skillConfig) { object[] data = null; if (skillConfig.SkillType == 5) { data = new object[skillConfig.addPropertyValue.Length]; for (int j = 0; j < skillConfig.addPropertyValue.Length; j++) { data[j] = skillConfig.addPropertyValue[j]; } } else { data = new object[skillConfig.effectValue.Length]; for (int j = 0; j < skillConfig.effectValue.Length; j++) { data[j] = skillConfig.effectValue[j]; } } return data; } /// /// 更新对应职业的装备图标 /// 该方法调用后,可以把装备了的职业装备, 显示到指定的UI(eqsUIObj)上 /// /// 职业类型 /// 装备的icon public static async void UpdateZyEqIcon(int zy, List eqsUIObj, int space = 12) { foreach (GameObject eqGo in eqsUIObj) { WidgetItem eqItem = await UIManager.Instance. CreateGComponentForObject(eqGo, null, root:eqGo.transform.parent.GetComponent()); // LogTool.Log(eqGo + "设置"); eqItem.SetEmpty(); } if (PlayerManager.Instance.eqController.zyEqDic.TryGetValue(zy, out Dictionary> bwDic)) { foreach (KeyValuePair> keyValuePair in bwDic) { //遍历每个部位下的全部装备 foreach (ItemInfo eqInfo in keyValuePair.Value) { if (eqInfo.eqInfo.isEquip) { //这里是取部位,eqsUIObj里面的部位,是有序排列的 GameObject eqGo = eqsUIObj[keyValuePair.Key - 1] as GameObject; WidgetItem eqItem = await UIManager.Instance. CreateGComponentForObject(eqGo, null, root:eqGo.transform.parent.GetComponent()); eqItem.InitWidget(eqInfo); } } } } SimpleLayout.Layout(eqsUIObj, LayoutType.Horizontal, space); } public static string GetEquipmentIconName(ItemInfo eqItem) { int q = 1; if (eqItem.eqInfo.quality > 3 && eqItem.eqInfo.quality <= 4) { q = 2; } else if (eqItem.eqInfo.quality > 4) { q = 3; } string eqIcon = "icon_eq_" + eqItem.eqInfo.basicEquipConfig.profession + "_" + eqItem.eqInfo.basicEquipConfig.Type + "_" + q; // switch (eqItem.eqInfo.basicEquipConfig.profession) return eqIcon; } /// /// 根据星级,显示不同的数量的星星和样子 /// /// /// public static void SetStarShow(List stars, int starGrade) { // 最大星级展示个数(6星,只显示一颗星星,换颜色) int maxShowStar = 5; // 计算 当前星级 应该用什么星星的表现 int group = (starGrade - 1) / maxShowStar; int i = 1; int showCount = (starGrade - 1) % maxShowStar + 1; foreach (GameObject star in stars) { SetStarImg(group, star); // 根据星级显示星星 if (showCount >= i) { star.SetActive(true); } else { star.SetActive(false); } i++; } SimpleLayout.Layout(stars, LayoutType.Horizontal); } private static void SetStarImg(int group, GameObject starObj) { MyImage image = starObj.GetComponent(); // 执行对应的逻辑 (0)GradeIcon_Star_s_Yellow (1)GradeIcon_Star_s_Premium switch (group) { case 0: // n = 1~5 image.icon_name = "dec_star"; break; case 1: // n = 6~10 image.icon_name = "dec_star_2"; break; default: // 其他情况 LogTool.Error("超出设计表现"); //image.icon_name = "dec_star"; break; } } /// /// 修改指定 GameObject 和其所有子对象的 Layer /// /// 目标 GameObject /// 新的 Layer 值 public static void ChangeLayerRecursively(GameObject obj, int newLayer) { if (obj == null || obj.layer == newLayer) return; // 修改当前对象的 Layer obj.layer = newLayer; // 遍历所有子对象,递归修改 foreach (Transform child in obj.transform) { ChangeLayerRecursively(child.gameObject, newLayer); } } } }