首页 > 解决方案 > 需要帮助弄清楚为什么我的 if 语句不会在 Unity c# 中通过

问题描述

我正在制作一个多人游戏,这是最后的排名表。奇怪的是if statement没有通过,即使我打印时gmD它们name是相同的。

有什么建议么?

void Awake()
{
    print("scoreBoard");

    foreach (string p in GManageer.deadPlayers)
    {
        scoreString += p + "\n";
    }
    scoreText.text = scoreString;

    string gmD = GManageer.winner;
    string name = controllsManager.username;

    print(gmD + ":gmD");
    print(name + ":name");

    if (gmD == name)
    {
        print("In here too");
        scoreText.text = "Yes, you won!";
        PlayerPrefs.SetInt("XP", PlayerPrefs.GetInt("XP") + (int)(70 / PlayerPrefs.GetInt("Lvl")));
    }
}

标签: c#unity3dphoton

解决方案


是的,这两个字符串很可能并不完全相同。比较字符串时,您可以使用string.Equal()函数添加比较设置。

如果(gmD.Equals(名称,StringComparison.InvariantCultureIgnoreCase))

使用区分区域性的排序规则、不变的区域性比较字符串,并忽略要比较的字符串的大小写。

还有一点需要注意的是,使用 name 作为变量名可能会导致一些错误,因为 UnityEngine.Object.name 是一个属性。


推荐阅读