// Path: Assets/Scripts/UI/Utilities/IconSizingUtility.cs
using Logic.Action;
using UnityEngine;
using UnityEngine.UI;
///
/// UI图标尺寸调整工具类
///
public static class IconSizingUtility
{
// 可以根据你的需求定义一些常量
private const float MAX_WIDTH = 128f;
private const float MAX_HEIGHT = 128f;
///
/// 根据预设规则调整Image组件的尺寸
///
/// 需要调整的Image组件
public static Vector2 GetPivot(IconViewSizeType sizeType)
{
return sizeType switch
{
IconViewSizeType.Building => new Vector2(0.5f,0.4f),
IconViewSizeType.MountainBuilding => new Vector2(0.5f,0.5f),
IconViewSizeType.Resource => new Vector2(0.5f,0.4f),
IconViewSizeType.Defense => new Vector2(0.5f,0.4f),
IconViewSizeType.Unit => new Vector2(0.5f,0.4f),
IconViewSizeType.Ground => new Vector2(0.5f,0.3f),
_ => new Vector2(0.5f,0.5f)
};
}
public static float GetScale(IconViewSizeType sizeType)
{
return sizeType switch
{
IconViewSizeType.Building => 2.5f,
IconViewSizeType.MountainBuilding => 2.5f,
IconViewSizeType.Resource => 3.5f,
IconViewSizeType.Defense => 3f,
IconViewSizeType.Unit => 3.5f,
IconViewSizeType.Ground => 2f,
_ => 1f
};
}
public static Vector2 GetPosition(IconViewSizeType sizeType)
{
return sizeType switch
{
IconViewSizeType._256x256 => new Vector2(0,0),
_ => new Vector2(0,11),
};
}
public static void SetIconSize(Image image, IconViewSizeType sizeType,bool isNeedPos = false)
{
var rect = image.GetComponent();
if (rect == null) return;
float scale = GetScale(sizeType);
Vector2 pivot = GetPivot(sizeType);
Vector2 position = GetPosition(sizeType);
rect.localScale = Vector3.one * scale;
if(isNeedPos)
rect.localPosition = position;
rect.pivot = pivot;
}
}