for循环调用字符串变成布尔值

时间:2018-12-01 11:58:28

标签: c#

这可能是一个非常愚蠢的问题,但我被困在这个问题上...

所以我有一堆布尔值,称为Monster1,monster2,...

我想使用一个for循环来切换col.name s的相应布尔值。 col.name返回monster1,monster2,...,但我不知道如何将这些字符串转换为布尔值

private void OnTriggerExit2D(Collider2D col)
{
    for (var i = 0; i < 9; i++)
    {
        if (col.name == "monster" + i)
        {
            "monster" + i = false;
        }
    }
}

2 个答案:

答案 0 :(得分:6)

为什么不使用布尔数组?

private void OnTriggerExit2D(Collider2D col)
{
    for (var i = 0; i < 9; i++)
    {
        if (col.name == "monster" + i)
        {
            monster[i] = false;
        }
    }
}

答案 1 :(得分:1)

如果需要通过怪物ID引用怪物,建议使用简单的字典。

此外,请记住,字典的性能可能比数组差。除非您要处理超过10.000个怪物,否则这不是问题。

Dictionary<string, bool> Monsters = new Dictionary<string, bool>();

private void OnTriggerExit2D(Collider2D col)
{
    for (var i = 0; i < 9; i++)
    {
        string monsterID = "monster" + i;
        Monsters[monsterID] = col.name != monsterID;
    }
}

那么您以后可以像这样使用它:

if(Monsters["monster3"])
    // Do something...