negitamago
1/29/2019 - 9:00 AM

指定したTypeのinterfaceをすべて取得するメソッド

指定したTypeのinterfaceをすべて取得するメソッド

    /// <summary>
    /// 指定したTypeのinterfaceをすべて取得する
    /// </summary>
    /// <typeparam name="Type"></typeparam>
    /// <returns></returns>
    public static List<Type> GetInterfaces<Type> ( params string[] tags )
        where Type : IGettable
    {
        if ( tags.Length == 0 )
        {
            Array.Resize ( ref tags, 2 );
            tags[0] = TagName.GameController;
            tags[1] = TagName.Player;
        }

        var interfaces = new List<Type>();

        foreach ( var tag in tags )
            interfaces.AddRange ( GameObject.FindWithTag ( tag ).GetComponents<Type> () );

        return interfaces;
    }