问题描述
本人刚开始学习C#,在Unity中想实现如下功能,控制汽车的档位,在不同档位下实现不同的速度,具体的代码如下://定义档位函数voidGears(){if(Input.GetKeyDown(KeyCode.Q)){if(gears<8){gears++;}}elseif(Input.GetKeyDown(KeyCode.E)){if(gears>-8){gears--;}}Debug.Log("gears="+gears);switch(gears){case8:speed>=70.0f&&speed<=80.0f;break;}}但是代码中出现了一下问题:求解答,为什么speed>=70.0f&&speed<=80.0f;会出错。注:speed以做全局变量定义。
解决方案
解决方案二:
贴全部代码,看不懂你想表达什么,这个完全都是编译没通过,你这个返回的是一个BOOL类型的结果,就好像是case8:true;你觉得意义吗,应该是case8:boola=true;你说对吗?
解决方案三:
case关键字后面应该是一个执行语句,例如赋值、函数调用等。但你只是给出了一个表达式,所以会报错。
解决方案四:
要是一个语句,这不是语句,只返回trueorfalse.应该:boolflag=speed>=70.0f&&speed<=80.0f;或者flag拿到外面定义
解决方案五:
你的那段不是执行语句,case下面是你要执行的操作,如果你是判断,要加上if之类的,进行判断操作
解决方案六:
你那个不是一个完整的语句,可以复制给一个变量,或者放到if里面。和case没有关系boolbFlag=speed>=70.0f&&speed<=80.0f;或者if(speed>=70.0f&&speed<=80.0f){.....}
解决方案七:
引用1楼yangliweng2的回复:
贴全部代码,看不懂你想表达什么,这个完全都是编译没通过,你这个返回的是一个BOOL类型的结果,就好像是case8:true;你觉得意义吗,应该是case8:boola=true;你说对吗?
case关键字后面应该是一个执行语句,我的意思是判断gear的值,,当gear的值为8的时候不是就执行case后面的语句嘛?我想使前面定义的变量speed处在0至80之间。
解决方案八:
引用5楼findcaiyzh的回复:
你那个不是一个完整的语句,可以复制给一个变量,或者放到if里面。和case没有关系boolbFlag=speed>=70.0f&&speed<=80.0f;或者if(speed>=70.0f&&speed<=80.0f){.....}
我是想将全局变量speed的变量区间限制在70-80之间,如果在外部事先定义一个布尔值b,是否可以这样写:case8:b=true;if(b){speed>=70.0f&&speed<=80.0f;}
解决方案九:
speed>=70.0f&&speed<=80.0f;这是个不完整的语句这是个不完整的语句这是个不完整的语句就相当于你要说我叫XXX你就说了个我叫下面就没了下面就没了下面就没了
解决方案十:
引用7楼u010641353的回复:
我是想将全局变量speed的变量区间限制在70-80之间,如果在外部事先定义一个布尔值b,是否可以这样写:case8:b=true;if(b){speed>=70.0f&&speed<=80.0f;}
不能这么写,你限制speed在区间if(speed>80.0f){speed=80.0f;}if(speed<70.0f){speed=70.0f;}
解决方案十一:
应该根据速度判断档位吧
解决方案十二:
boolflag=speed>=70.0f&&speed<=80.0f;
这堆玩意要有一个布尔类型的变量接收