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); } } }
目录
根据剩余空间动态调整重叠大小
分类:代码
时间:2025-09-22 11:20:08