首页 > 解决方案 > C# 变量在赋值后没有改变,改变显示在 UI 中

问题描述

在我的记分牌 U​​I 中,我有一个框,它只是一个图像,里面有 Score_Entries 作为孩子。有 4 个孩子,游戏中每个玩家一个。当记分板启动时,我有一个函数可以在 Score_Entries Ui 元素中分配文本。为此,我有一个名为 Text[] playerNames 的数组,并且我的 UI 元素在检查器中被拖入其中。

int i = 0;
foreach (Player test in PhotonNetwork.PlayerList)
{
    playerNames[i].text = test.NickName;
    allscores[i].text = 0.ToString();
    i++;
    Debug.Log("Text inside the array: " + playerNames[i].text);
    Debug.Log("Player Name: " + test.NickName);
}

如您所见,我已将第一个 Text 元素中的文本设置为玩家的名称。但是,应该发生的是在 Debug 语句中 Player Name 行输出和数组输出中的 Text 应该向我显示存储在里面的字符串test.NickName。说测试是玩家的名字。playersNames[i].text should == test目前它playerNames[i] = TEST NAME在创建 UI 时显示哪个是我的默认文本。但是,在游戏中,玩家的姓名正确显示为 test 而不是 TEST NAME。

我不明白这是如何工作的,有人可以帮忙吗?

标签: c#unity3dphoton

解决方案


问题是 i++ 把 i++ 放在后面

Debug.Log("Text inside the array: " + playerNames[i].text);
Debug.Log("Player Name: " + test.NickName);
i++

推荐阅读