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);