我准备制作某种武器列表,当然对它们进行硬编码,这样如果没有特殊的东西,它们就不能被黑客攻击或修改。我只是想知道是否有更快的方法:
public Firearm(string WeaponName, int WeaponId, float Damage, FireType WeaponFireType, float FireRate, float ReloadTime, int MaxClip, bool InfiniteAmmo)
{
weaponName = WeaponName;
weaponID = WeaponId;
damage = Damage;
weaponFireType = WeaponFireType;
fireRate = FireRate;
reloadTime = ReloadTime;
maxClip = MaxClip;
infiniteAmmo = InfiniteAmmo;
}
然后是这个:(这只是一个例子,我不会在实际脚本中这样做。
void InitializeWeapons()
{
var allFirearms = new List<Firearm>();
allFirearms.Add(new Firearm(
"Pistol",
0, 12.5f, Firearm.FireType.SemiAutomatic,
1.2f, 1.5f, 12, true
));
}
有其他方法可以做到这一点吗?更干净、更容易看到发生了什么的东西?
编辑:有点糟糕,我不能把你们全部作为批准的答案,因为它们都帮助我学习了一些东西等等。我只会选择我决定使用的那个。我将完成代码并批准我使用的代码。
最佳答案
也许可以尝试Fluent Builder pattern ?该模式并非没有缺陷,但它确实使复杂的对象创建更具可读性。 首先你需要添加WeaponBuilder类:
public class WeaponBuilder
{
private string name;
private int damage;
private int fireRate;
public WeaponBuilder CreateWeapon(string name)
{
this.name = name;
return this;
}
public WeaponBuilder WithDamage(int damage)
{
this.damage = damage;
return this;
}
public WeaponBuilder WithFireRate(int fireRate)
{
this.fireRate = fireRate;
return this;
}
public Weapon Build()
{
return new Weapon(name, damage, fireRate);
}
}
然后你像这样创建你的武器:
var weapon = new WeaponBuilder()
.CreateWeapon("AK-47")
.WithDamage(100)
.WithFireRate(50)
.Build();
关于c# - 有没有更好的初始化类的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31522366/