protected T CreatePool <T>(GameObject prefab, string name, out PoolSettings settings) where T : Component, IPool <PoolMember> { var poolGO = new GameObject(name); poolGO.transform.SetParent(transform); var pool = poolGO.AddComponent <T>(); settings = defaultPoolSettings.Clone(); settings.prefab = prefab; return(pool); }