在一段时间以来最好的错误消息中,我很好奇问题出在哪里。

原始代码

float currElbowAngle = LeftArm ? Elbow.transform.localRotation.eulerAngles.y
                               : 360f - Elbow.transform.localRotation.eulerAngles.y

我正在使用Unity3d和C#; LeftArm是bool类型,根据documentationElbow.transform.localRotation.eulerAngles.y返回float值。

此代码给我错误:



可以解决此问题:
float currElbowAngle = LeftArm ? (float) Elbow.transform.localRotation.eulerAngles.y
                               : 360f - Elbow.transform.localRotation.eulerAngles.y

所以我的问题是:尝试进行通信时出错了什么,实际上出了什么问题?

更新1:弯头是GameObject,此错误在Visual Studio中

最佳答案

对于类型系统,三元(e?a:b)运算符有些棘手,因为双方都需要给出相同的返回类型。如果那里有一个细微的错误,我不会感到惊讶。编译器会让我们偶尔笑一下是很好的。

这可能也解决了它:

float currElbowAngle = LeftArm ? 0.0f + Elbow.transform.localRotation.eulerAngles.y
                               : 360f - Elbow.transform.localRotation.eulerAngles.y

我推测问题是您的true分支是一个左值,而false分支是一个右值。我的解决方法使两个分支都成为右值。

关于c# - 从 'float'和 'float'以及从 'float'到 'float'都存在隐式转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14364864/

10-12 03:57