首页 > 解决方案 > Unity/C#一个函数来设置任何int?

问题描述

我有一个小项目,我想避免为每个整数创建一个设置器。所以我在想这是否可能。

所以我想设置
player.setResource(player.money, 100);,
player.setResource(player.coal, 20);等的数量

首先我不确定是否可能,其次如何编写函数本身。

public void setResource(int resource, int amount)
{
        ???
}

标签: c#unity3d

解决方案


您可以使用 Enum 来定义资源类型,并使用 Dictionary 来存储每个资源的值。这是一个例子:

public enum ResourceType
{
    Coal,
    Money
}

private Dictionary<ResourceType, int> _resources = new Dictionary<ResourceType, int>();

public void SetResource(ResourceType resourceType, int value)
{
    _resources[resourceType] = value;
}

public int GetResource(ResourceType resourceType, int defaultValue = 0)
{
    if (_resources.TryGetValue(resourceType, out var value))
        return value;
    else
        return defaultValue;
}

推荐阅读