我最近收到的错误信息可能是最好的一条,我很想知道出了什么问题。
原始代码:
float currElbowAngle = LeftArm ? Elbow.transform.localRotation.eulerAngles.y
: 360f - Elbow.transform.localRotation.eulerAngles.y
我正在使用Unity3d和C#; LeftArm是一个bool
类型,并且根据文档,Elbow.transform.localRotation.eulerAngles.y
返回一个float
值。
这段代码给我报错:
存在从“float”和“float”到“float”的隐式转换以及从“float”到“float”的转换
以下修复了此问题:
float currElbowAngle = LeftArm ? (float) Elbow.transform.localRotation.eulerAngles.y
: 360f - Elbow.transform.localRotation.eulerAngles.y
所以我的问题是:那个错误想要表达什么,实际上出了什么问题?更新1:Elbow是一个GameObject,在Visual Studio中出现了这个错误。
f=x+y+z
,即f=(float)((FpuDouble)x+(FpuDouble)y+(FpuDouble)z)
[FpuDouble
指的是80位8087内部浮点类型,不可用于.net用户代码]。 - supercat:
两侧有两种不同类型的表达式,并且隐式转换在两个方向上都可用,因此它无法选择一个“最佳”类型并决定进行哪种转换。通过添加显式转换,现在两侧都具有相同类型的类型,因此可以编译。但似乎您正在使用两种称为“float”的类型的环境中工作。很有趣。 - Damien_The_Unbeliever