C# Can';t读取更新的变量

C# Can';t读取更新的变量,c#,variables,unity3d,rotation,C#,Variables,Unity3d,Rotation,当按下某个键时,我需要停止/恢复风扇的旋转,因此我编写了以下C代码: cummuteFan()方法在我按下按钮时被调用 变量开始为false,风扇没有正确旋转,当我按下按钮时,调用该方法,变量值改变,开始旋转,但是如果我想停止,它就不再工作了。调试告诉我,值在communicationfan()中正确更改为false,但update()继续读取旧值(true),并且风扇没有停止。[SOLVED]我不知道为什么,但是我创建了一个只包含bool和getter/setter方法的类,它可以正常工作,因

当按下某个键时,我需要停止/恢复风扇的旋转,因此我编写了以下C代码:

cummuteFan()
方法在我按下按钮时被调用


变量开始为false,风扇没有正确旋转,当我按下按钮时,调用该方法,变量值改变,开始旋转,但是如果我想停止,它就不再工作了。调试告诉我,值在
communicationfan()
中正确更改为false,但
update()
继续读取旧值(true),并且风扇没有停止。

[SOLVED]我不知道为什么,但是我创建了一个只包含bool和getter/setter方法的类,它可以正常工作,因此您将变量设置为public,这意味着项目的任何其他部分都可以轻松编辑它。在您的情况下,您是通过编辑器更改它的

为了避免将来出现此类问题,请尝试使用保护

public class Test : MonoBehaviour
{
    private bool isRotating = false;

    public void setIsRotating(bool status)
    {
        isRotating = status;
    }

    public bool getIsRotating()
    {
        return isRotating;
    }
}

这样的编码将为您以后节省很多麻烦

您是否正在跟踪
通勤
更新
中的值?每次调用rotate方法时,它都会以给定角度旋转对象,因此它不会开始旋转,因为它被放置在update()中,所以每帧都会被调用。跟踪是什么意思?我检查并编辑了我以前的评论。但视频中说旋转应该只用于“运动学”对象-我不知道这意味着什么-但我明白,当使用物理处理对象时,你应该避免像你那样旋转(我不知道这是否是你的情况)。好吧,但我没有使用physicsnope,我也尝试过这样做,但问题仍然存在,这几乎是不可能的。无论哪种方式,你都应该公布你是如何修复的,然后接受你自己的答案。
public class Test : MonoBehaviour
{
    private bool isRotating = false;

    public void setIsRotating(bool status)
    {
        isRotating = status;
    }

    public bool getIsRotating()
    {
        return isRotating;
    }
}