MonoBehaviour.OnTransformChildrenChanged()
Описание
Вызываются, когда список прямых детей GameObject's Transform изменения.
Следующие изменения направляют дочерей GameObject на вызов OnTransformChildrenChanged:
- Добавление нового дочернего объекта в GameObject's Transform.
- Удаление дочернего объекта.
- Передача ребенка другому родителю.
- Изменение порядка прямых детей.
Не имеет значения, выполняются ли эти действия в окне Hierarchy или из кода с APIs, например, Transform.SetParent, Object.Destroyили Transform.SetSiblingIndex.OnTransformChildrenChanged запускается только при изменениях в непосредственных (прямых) дочерних объектах Transform. Изменения в внуках или более глубоких потомках не вызывают этот метод на родительском объекте.OnTransformChildrenChanged вызывается во время выполнения, когда изменяются прямые дочерние объекты GameObject. Он также может быть вызван в режиме редактирования, если скрипты используют ExecuteInEditMode или ExecuteAlways.
Используйте этот обратный вызов, чтобы отреагировать на изменения в непосредственной дочерней иерархии GameObject, такие как обновление элементов UI, управление списками дочерних объектов или обновление кэшированных ссылок.
Дополнительные ресурсы: MonoBehaviour.OnTransformParentChanged.
// Attach this script to any GameObject (for example, an empty "Parent" object). // Assign a UI Text component to the countText field in the Inspector. // Add or remove children from the GameObject at runtime or in the Editor.
using UnityEngine; using UnityEngine.UI;
public class ChildrenCounter : MonoBehaviour { public Text countText;
private void Start() { UpdateChildrenCount(); }
// Called by Unity when a child is added or removed private void OnTransformChildrenChanged() { UpdateChildrenCount(); }
private void UpdateChildrenCount() { int childrenCount = transform.childCount; if (countText != null) { countText.text = $"Children: {childrenCount}"; } } }