无法将类型 'float' 隐式转换为 'void'

Cannot implicitly convert type 'float' to 'void'

我一直在尝试将 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);

错误:

Cannot implicitly convert type 'void' to 'float'

第二行抛出两个额外的编译器错误。

return Mathf.Clamp (angle, min, max);

'rotateBones.ClampAngle(float, float, float): a return keyword must not be followed by an expression when a method returns void

Cannot implicitly convert type 'float' to 'void'

我从我的编码背景中了解到 float to void 和 void to float 错误,我只是不知道如何在 C# 中修复这两个问题。

当使用 C# 时,void 用于定义 return 没有值的方法,因此为了符合 C# 语法,void 的方法类型不能包含 return线。但是,通过将 void 更改为变量类型或 class,例如 int、bool、float、string 等...,您可以使它成为 return 那种类型。因此,在您的情况下,您正在 returning 三个浮点数的 Mathf.Clamp,这将是 returning 一个浮点数。所以你的新代码看起来像这样:

public 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 float ClampAngle (float angle, float min, float max) {
    if (angle < -360){
        angle += 360;
    }
    if (angle > 360){
        angle -= 360;
    }
    return Mathf.Clamp (angle, min, max);
} 

一个简单的修复,但在用 C# 编程时必须知道。
编辑:
至于您在其他答案的评论中描述的空引用异常,这是因为 GameObject spine 未定义或声明为 public 或私有。制作 GameObject public 并在检查器中定义它。