在一段时间以来最好的错误消息中,我很好奇问题出在哪里。
原始代码
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 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/