using System.Collections.Generic;
using Fort23.UTool;
using UnityEngine;
using UnityEngine.UI;
namespace Fort23.Mono
{
public static class HeroUITools
{
///
/// 根据星级,显示不同的数量的星星和样子
///
///
///
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++;
}
}
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);
}
}
}
}