using UnityEngine; public abstract class PrefabFactory : MonoBehaviour where T : Component { [SerializeField] protected T _ProductPrefab; public virtual PrefabProduct CreateProduct(Vector3 position = new Vector3(), Quaternion rotation = new Quaternion()) { GameObject instance = Instantiate(_ProductPrefab.gameObject, position, rotation); PrefabProduct newProduct = instance.GetComponent(); newProduct.Initialize(); return newProduct; } }