logo小熊博客
首页 fk标记语言示例 登录
目录
根据剩余空间动态调整重叠大小
using UnityEngine;

[ExecuteAlways]
public class CardHandLayout : MonoBehaviour
{
    public float minOverlap = 30f; // 最小重叠量,防止牌太分散
    public float maxOverlap = 100f; // 最大重叠量,防止牌完全覆盖

    void Update()
    {
        int count = transform.childCount;
        if (count == 0) return;

        RectTransform parent = GetComponent<RectTransform>();
        RectTransform firstCard = transform.GetChild(0) as RectTransform;

        float parentWidth = parent.rect.width;
        float cardWidth = firstCard.rect.width;

        float overlap = (parentWidth - cardWidth) / (count - 1);

        // 限制在合理范围
        overlap = Mathf.Clamp(overlap, minOverlap, maxOverlap);

        for (int i = 0; i < count; i++)
        {
            RectTransform child = transform.GetChild(i) as RectTransform;
            child.anchoredPosition = new Vector2(i * overlap, 0);
        }
    }
}

下一篇:windows命令行走代理
请我喝奶茶!
赞赏码
手机扫码访问
手机访问