using System.Collections; using System.Collections.Generic; using System.Runtime.CompilerServices; using UnityEngine; using UnityObject = UnityEngine.Object; namespace VketCloudGUITools.Utilities { public static class TransformUtility { /// /// すべての子孫を取得 /// /// public static IEnumerable GetAllDecendants(this Transform transform) { foreach (Transform child in transform) { yield return child; foreach (Transform decendant in child.GetAllDecendants()) { yield return decendant; } } } } public static class ComponentUtility { /// /// RequireComponent指定されたコンポーネントを取得する。 /// がnullならば検索され、そうでなければ継続使用される。 /// /// /// 対象コンポーネントが破損/階層移動することは考慮しない。 /// /// /// /// コンポーネント取得結果 /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public static TRecuireComponent GetRequiredComponent(this Component component, ref TRecuireComponent requiredComponent) { if (requiredComponent == null) { requiredComponent = component.GetComponent(); } return requiredComponent; } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static TRecuireComponent GetRequiredComponentInParent(this Component component, ref TRecuireComponent requiredComponent) { if (requiredComponent == null) { requiredComponent = component.GetComponentInParent(); } return requiredComponent; } } }