campfire/Assets/Scripts/AutoListPositioner.cs

32 lines
1.1 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[ExecuteAlways]
public class AutoListPositioner : MonoBehaviour {
public float Padding;
public List<float> SpecificPaddings;
private void Update() {
if (!Application.isPlaying) {
for (int Index = SpecificPaddings.Count; Index < transform.childCount - 1; Index++) {
SpecificPaddings.Add(Padding);
}
RectTransform Parent = GetComponent<RectTransform>();
float Y = Parent.position.y;
for (int Index = 0; Index < transform.childCount; Index++) {
RectTransform Child = transform.GetChild(Index).GetComponent<RectTransform>();
if (Child) {
Child.position = new Vector2(Child.position.x, Y);
if (Index < SpecificPaddings.Count) {
Y -= Child.rect.height + SpecificPaddings[Index];
}
} else {
Debug.LogWarning($"AutoListPositioner {name} has non-UI children!");
}
}
}
}
}