C# 繁殖不同种类动物的最佳方式是什么?

C# 繁殖不同种类动物的最佳方式是什么?,c#,unity3d,C#,Unity3d,我有一个名为Animal的基类和一些继承自它的子类。例如,类奶牛,猪,鸡等 现在我想在我的世界里繁殖一种动物(游戏对象)。我应该为每个子类创建一个spawn方法,还是只在我的基类Animal中创建一个方法。如果我在动物中创建了一个方法,那么引用我的动物的最佳方式是什么。我应该使用预制件吗 我怎样才能在Animal中创建一个Spawn(这里的一些参数)方法,例如可以生成Pig。这里的想法是设置一个导出变量,它可以是一个游戏对象数组,可能是每种动物的预设。 然后可以选择随机执行(生成一个介于0和数组

我有一个名为
Animal
的基类和一些继承自它的子类。例如,类
奶牛

现在我想在我的世界里繁殖一种动物(游戏对象)。我应该为每个子类创建一个spawn方法,还是只在我的基类
Animal
中创建一个方法。如果我在
动物
中创建了一个方法,那么引用我的动物的最佳方式是什么。我应该使用预制件吗


我怎样才能在
Animal
中创建一个
Spawn(这里的一些参数)
方法,例如可以生成
Pig

这里的想法是设置一个导出变量,它可以是一个游戏对象数组,可能是每种动物的预设。 然后可以选择随机执行(生成一个介于0和数组长度之间的数字)或选择数组的一个位置。 那么你只需要选择在哪里。如果它与繁殖点是同一个空对象,则只需:
实例化(数组[position],transform.position,transform.rotation)

很高兴它对您有用

如果您想使用方法来处理创建动物对象,我会使用工厂模式来处理您的动物创建对象

创建一个
enum
AnimalType
作为您的方法参数,它可以拆分让用户决定用户想要哪种动物

public enum AnimalType { PIG, Cow, Chicken }
public abstract class Animal { }
public class Pig : Animal { }
public class Cow : Animal { }
public class Chicken : Animal { }
有一个
字典
用于注册
动物类型
映射器与
动物
对象

public class AnimalFacotry 
{
    Dictionary<AnimalType, Animal> _dict;
    public AnimalFactory() 
    {
        _dict = new Dictionary<AnimalType, Animal>();
        _dict.Add(AnimalType.PIG, new Pig());
        _dict.Add(AnimalType.Chicken, new Chicken());
        _dict.Add(AnimalType.Cow, new Cow());
    }
    public Animal Spawn(AnimalType type)
    {
        if (_dict.ContainsKey(type))
            return _dict[type];
        return null;
    }
}
如果将来您将添加更多的
动物
类,您只需在
枚举
字典
中注册新动物即可


工厂模式来处理创建对象的问题,而不必指定要创建的对象的确切类,因为所有动物都继承自
Animal
类。

我将创建一个工厂类,了解每种动物并可以实例化它。我肯定会使用预制件。看一看,如果你有
字典
,我会说这是个好主意。
AnimalType.PIG,new Cow()
?我想你有一两个打字错误您在
工厂
中也有输入错误。另外,为什么
PIG
是caps中唯一的一个?“你应该像其他人一样把它正常地包装起来。”我很好奇。您能解释一下为什么要使用
Func
而不是
Animal
作为值吗?或者提供一些参考链接。我想知道谢谢:)@D-Shih-工厂是创造东西的东西。您所设计的是一个存储东西的存储库。
字典
只能存储现有实例。如果它是
字典
,那么你有一个可以创造动物的结构,然后它就是一个工厂。
var factory = new AnimalFacotry();
Animal cow  = factory.Spawn(AnimalType.Cow);