Per*_*hik 13 c# compiler-errors unity-game-engine
可能是我在一段时间内得到的最好的错误信息,我很好奇出了什么问题.
原始代码
float currElbowAngle = LeftArm ? Elbow.transform.localRotation.eulerAngles.y
: 360f - Elbow.transform.localRotation.eulerAngles.y
Run Code Online (Sandbox Code Playgroud)
我正在使用Unity3d和C#; LeftArm是一种bool类型,根据文档 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
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:尝试沟通的错误是什么,实际出了什么问题?
更新1:弯头是一个GameObject,这个错误是在Visual Studio中
三元 (e?a:b) 运算符对于类型系统来说稍微棘手一些,因为双方都需要给出相同的返回类型。如果那里有一个微妙的错误,我不会感到惊讶。遵守者偶尔让我们开怀大笑是件好事。
这也可能修复它:
float currElbowAngle = LeftArm ? 0.0f + Elbow.transform.localRotation.eulerAngles.y
: 360f - Elbow.transform.localRotation.eulerAngles.y
Run Code Online (Sandbox Code Playgroud)
我推测问题在于您的 true 分支是左值,而 false 分支是右值。我的解决方法使两个分支都成为右值。
| 归档时间: |
|
| 查看次数: |
398 次 |
| 最近记录: |