// 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; } }