コガネブログ

平日更新を目標にUnityやC#などのゲーム開発アレコレを書いていきます

【Unity】インターフェイスを指定して子オブジェクトからコンポーネントを取得する拡張メソッド

using UnityEngine;

public static class GameObjectExtensions
{
    /// <summary>
    /// インターフェイスを指定して子オブジェクトからコンポーネントを取得します
    /// </summary>
    public static T GetInterfaceOfComponentInChildren<T>( 
        this GameObject self, 
        bool includeInactive 
    ) where T : class
    {
        foreach ( var n in self.GetComponentsInChildren<Component>( includeInactive ) )
        {
            var component = n as T;
            if( component != null )
            {
                return component;
            }
        }
        return null;
    }
    
    /// <summary>
    /// インターフェイスを指定して子オブジェクトからコンポーネントを取得します
    /// </summary>
    public static T GetInterfaceOfComponentInChildren<T>( this GameObject self ) where T : class
    {
        return self.GetInterfaceOfComponentInChildren<T>( false );
    }
}