我应该在我的游戏中为不同种类的资源使用泛型吗?

问题描述 投票:0回答:0

我正在制作一个增量/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,它在序列化泛型时可能会出现问题

c# unity3d
© www.soinside.com 2019 - 2024. All rights reserved.