72 lines
2.2 KiB
C#
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;
|
|
}
|
|
} |