TH1/Unity/Assets/Scripts/TH1_UI/Utilities/IconSizingUtility.cs
2025-12-30 13:40:20 +08:00

72 lines
2.2 KiB
C#

// Path: Assets/Scripts/UI/Utilities/IconSizingUtility.cs
using Logic.Action;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// UI图标尺寸调整工具类
/// </summary>
public static class IconSizingUtility
{
// 可以根据你的需求定义一些常量
private const float MAX_WIDTH = 128f;
private const float MAX_HEIGHT = 128f;
/// <summary>
/// 根据预设规则调整Image组件的尺寸
/// </summary>
/// <param name="image">需要调整的Image组件</param>
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<RectTransform>();
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;
}
}