可能是我在一段时间内得到的最好的错误信息,我很好奇出了什么问题。
原始代码
float currElbowAngle = LeftArm ? Elbow.transform.localRotation.eulerAngles.y
: 360f - Elbow.transform.localRotation.eulerAngles.y
我正在使用Unity3d和C#; LeftArm是bool
类型,根据documentation Elbow.transform.localRotation.eulerAngles.y
返回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中
答案 0 :(得分:2)
对于类型系统,三元(e?a:b)运算符稍微复杂一些,因为双方都需要提供相同的返回类型。如果那里有一个微妙的错误,我不会感到惊讶。很快,编制者会让我们偶尔发笑。
这也可能解决了这个问题:
float currElbowAngle = LeftArm ? 0.0f + Elbow.transform.localRotation.eulerAngles.y
: 360f - Elbow.transform.localRotation.eulerAngles.y
我猜测问题是你的真分支是左值而假分支是右值。我的解决方法使两个分支都成为右值。