我正在制作一个增量/Clicker 游戏,我担心我的“资源”为了性能而工作的方式。使用这些资源进行的装箱/拆箱是否会消耗大量资源?我希望它保持打开状态,以便我可以在以后需要时为资源分配独特的功能,这就是我不使用接口的原因。
public class Resource
{
private string name;
private int amount = 0;
private bool revealed = false;
public Resource()
{
}
public Resource(int amount)
{
this.amount = amount;
}
public string Name { get => name; set => name = value; }
public int Amount { get => amount; set => amount = value; }
public bool Revealed { get => revealed; set => revealed = value; }
}
public class Food : Resource { public Food(int amount) { Name = "Food"; Amount = amount; } };
它有效,但我关心的是性能。 我还比较关心如何在需要时在运行时创建特定类型的资源。这是我目前尝试的一个例子
foreach (Resource res in InitialResources)
{
int initalCost = res.Amount;
int calculatedCost = (int)(initalCost * (i * ExponentialScaling));
Resource newRes = ResourcesManager.Instance.NewResource(res.Name, calculatedCost);
ResourceCosts[i].Add(newRes);
}
NewResource 方法看起来像这样
public Resource NewResource(string name, int amount)
{
switch (name)
{
case "Food":
return new Food(amount);
case "Wood":
return new Wood(amount);
case "Stone":
return new Stone(amount);
default: return null;
}
}
如果我使用泛型,是否可以进一步优化它?我正在使用 Unity,它在序列化泛型时可能会出现问题