点击切换案例; C#,Unity

时间:2017-05-25 22:16:44

标签: c# unity3d

我目前正在为游戏制作教程。

我试图使用switch语句遍历预先写好的文本。 switch语句由一个计数器控制,当你点击" next"按钮。交换机的代码如下:

    public void tutMGR(){
    switch (nextCount) {

    case 0:
        tutText.text = "1";
        break;

    case 1:
        tutText.text = "2";
        break;

    default:
        break;
    }

按钮代码为:

    public void nextCnt(){
        nextCount++;
    }

在检查器中,nextCount正在增加。如果我在运行游戏之前更改了检查器中的值,则case语句将显示所需的文本。在游戏运行时我无法改变它。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

可能是文字正在改变;但是,对象并不知道它已经改变了;所以,它不是重绘屏幕。

调用'tutText.Update()'可以解决您的问题。

要考虑的另一件事是使用Dictionary而不是switch语句来进行这样的简单翻译。 例如,要将int转换为西班牙语文本,您可以:

Dictionary<int,string> spaNums = new Dictionary<int,string>()
{
   {1,"uno"},
   {2,"dos"},
   {3,"tres"},
}

tutText.text = spaNums[nextCount];

现在,当您想要添加新映射时,只需在Dictionary中添加一个新条目,而无需更改代码。

请注意,如果您只想进行直接文本翻译,则可以使用

tutText.text = nextCount.ToString();

由于ToString()可用于C#

中的所有对象

答案 1 :(得分:1)

我最终解决了它!我所要做的就是将switch语句放在按钮函数本身中,所以最终看起来像这样:

    public void nextCnt(){
    nextCount++;

    switch (nextCount) {

    case 1:
        tutText.text = "1";
        break;

    case 2:
        tutText.text = "2";
        miniMap.gameObject.SetActive (true);
        break;

    default:
        break;
    }
}

到目前为止它似乎正在发挥作用。谢谢你的帮助。