【发布时间】:2015-07-02 20:41:19
【问题描述】:
我一直在尝试将 UnityScript 转换为 C#,但出现错误。以下是我的源代码:
GameObject spine;
private float z = 0;
private float ySpeed = 13.0f;
private float zMinLimit = -40.00f;
private float zMaxLimit = 40.00f;
void LateUpdate() {
z -= Input.GetAxis("Mouse Y") * ySpeed;
z = ClampAngle(z, zMinLimit, zMaxLimit);
Quaternion rotation_bone = Quaternion.Euler(0, 0, -z);
spine.transform.localRotation = rotation_bone;
}
static void ClampAngle (float angle, float min, float max) {
if (angle < -360){
angle += 360;
}
if (angle > 360){
angle -= 360;
}
return Mathf.Clamp (angle, min, max);
}
导致编译错误的行是:
z = ClampAngle(z, zMinLimit, zMaxLimit);
出现错误:
无法将类型“void”隐式转换为“float”
第二行引发两个额外的编译器错误。
return Mathf.Clamp (angle, min, max);
'rotateBones.ClampAngle(float, float, float):方法返回void时,return关键字后面不能跟表达式
无法将类型“float”隐式转换为“void”
我从我的编码背景中了解 float to void 和 void to float 错误,我只是不知道如何在 C# 中修复这两个错误。
【问题讨论】:
-
ClampAngle定义的返回类型表明它正在返回void。你实际上是在返回float。修复返回类型,它应该可以工作。 -
这是我的担心。我知道错误是什么,我只是不知道如何转换该值。我尝试铸造(浮动)ClampAngle(z,zMinLimit,zMaxLimit);它没有用。
标签: c# unity3d unityscript