Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Switch语句未按预期工作,即使语法可能完全正确_C#_Unity3d - Fatal编程技术网

C# Switch语句未按预期工作,即使语法可能完全正确

C# Switch语句未按预期工作,即使语法可能完全正确,c#,unity3d,C#,Unity3d,我是一个c初学者,正在做一个游戏。我要做的是,如果用户选择某个级别,他可以得到奖励。这是我的密码: 无效奖励 { 开关电平 { 案例1: 终端。写向1; 打破 案例2: 终端。向上写入2; 打破 案例3: 终端。写向3; 打破 违约: Debug.logError输入无效!; 打破 } 问题是我在case1:写的行中出现了一个错误 控件不能从一个案例标签“案例1:”掉落到另一个[Assembly CSharp] 我已经添加了所有的中断和一切,但我仍然得到了错误。 还有一件事我想指出,当我选择3级

我是一个c初学者,正在做一个游戏。我要做的是,如果用户选择某个级别,他可以得到奖励。这是我的密码:

无效奖励 { 开关电平 { 案例1: 终端。写向1; 打破 案例2: 终端。向上写入2; 打破 案例3: 终端。写向3; 打破 违约: Debug.logError输入无效!; 打破 } 问题是我在case1:写的行中出现了一个错误

控件不能从一个案例标签“案例1:”掉落到另一个[Assembly CSharp]

我已经添加了所有的中断和一切,但我仍然得到了错误。 还有一件事我想指出,当我选择3级时,我没有得到任何预期的输出,即奖励3 有没有关于如何修复的建议?

我想我知道原因

您没有捕获变量级别的值。这将作为参数通过方法传递,或者您将在方法内部捕获它,但我认为您希望通过方法ShowLevel将其作为参数传递

void ShowLevel(int level)
或者,相反,您可以从ShowLevel方法内部设置level的值:

Console.WriteLine("Enter a level: ");
string sLevel = Console.ReadLine(); // capture this value as a string
int level = int.Parse(sLevel); // parse as integer and set level as an integer

别难过-我一直都会犯这样的错误。

编辑代码后,您是否尝试过清理/重建项目?Switch语句之类的语句没有按预期工作,我真的不明白Switch语句是如何工作的。这很奇怪。代码对我来说似乎没问题。也许Unity正在缓存以前的版本文件的初始化,因此您正在继续执行以前的代码。您可以通过仅使用此代码创建新的Unity项目来重现此问题吗?错误是否来自unity3d日志窗口?编辑:编译器没有捕获此错误的原因我无法理解。级别也可以是类中的字段或属性。它不需要是局部变量或者方法的参数…在这种情况下,他使用它作为局部变量,或者至少他似乎是这样,如果他的代码是按面值进行的。哎呀!实际上我忘了提到我已经在代码开始时声明了级别变量,我非常抱歉我忘了提到那条信息,但错误仍然存在。。。你能建议一个修复方法吗?取决于你想做什么-你想通过参数传递级别变量,还是想在本地声明它?我已经给了你一个修复方法。如果你在代码开始时在方法之外声明了它,那么void showlegint level就是一个解决方法。