我目前正在为游戏制作教程。
我试图使用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语句将显示所需的文本。在游戏运行时我无法改变它。
有什么建议吗?
答案 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;
}
}
到目前为止它似乎正在发挥作用。谢谢你的帮助。