c#脚本无法覆盖函数中的全局变量

c#脚本无法覆盖函数中的全局变量,c#,unity3d,C#,Unity3d,我希望你能回答这个问题。我觉得这很容易,但我被卡住了。我有一个叫做“CalcTransition”的函数。它为我计算过渡的剩余时间。但是我的全局变量“time”永远不会被覆盖。它保持在零。有人知道吗 以下是完整的代码: float duration = 1.0f; float startTime; float time; string lastTrigger = null; float TransitionTwoValues(float minVal,

我希望你能回答这个问题。我觉得这很容易,但我被卡住了。我有一个叫做“CalcTransition”的函数。它为我计算过渡的剩余时间。但是我的全局变量“time”永远不会被覆盖。它保持在零。有人知道吗

以下是完整的代码:

    float duration = 1.0f;
    float startTime;
    float time;

    string lastTrigger = null;

    float TransitionTwoValues(float minVal,float maxVal){
        float vTemp = maxVal;
        maxVal = minVal;
        minVal = vTemp;

        return Mathf.SmoothStep(minVal,maxVal,time);
    }

    void ResetStartTimeOnce(string currentTriggerName,string lastTriggerName){
        if(currentTriggerName != lastTrigger){
            lastTrigger = lastTriggerName;
            startTime = Time.time;
        }
    }
    void CalcTransition(){
        time = (Time.time - startTime) / duration;
    }

    void Focus(){
        duration = 0.1f;
        ResetStartTimeOnce("FocusOn", lastTrigger);
        CalcTransition();

        _Vignette.intensity.value  = TransitionTwoValues( vignetteMaxVal, vignetteMinVal);
        _MotionBlur.intensity.value = TransitionTwoValues(motionBlurMaxVal,motionBlurMinVal);
        _ColorAdjustment.saturation.value = TransitionTwoValues(colorSaturationMaxVal,colorSaturationMinVal);
    }
    void FocusRelease(){
        duration = 0.5f;
        ResetStartTimeOnce("FocusOff", lastTrigger);
        CalcTransition();

        _Vignette.intensity.value  = TransitionTwoValues( vignetteMinVal, vignetteMaxVal);
        _MotionBlur.intensity.value = TransitionTwoValues(motionBlurMinVal,motionBlurMaxVal);
        _ColorAdjustment.saturation.value = TransitionTwoValues(colorSaturationMinVal,colorSaturationMaxVal);
    }

    void Update(){

        if(Input.GetMouseButtonDown(1)){
            Focus();
            Debug.Log(time); //** TIME ALWAYS 0 WHY?
        }

        if(Input.GetMouseButtonUp(1)){
            FocusRelease();
        }  
    }
}

时间始终为零,因为您在
MouseDown
的帧(更新)中计算了一次时间,然后在下次重新计算它之前再也不要触摸它。

调试代码,以确保分配给
时间的代码路径实际运行。它可能被覆盖。。与0。检查数值;就我们所知,时间可能是0,意思是
0-0/任何东西
都是0。谢谢你的回答:)我想你是对的。我在另一个脚本中冻结了游戏速度/时间,这可能就是原因。嘿,谢谢你的回复。我考虑了你的回答,尝试了“GetMouseButton”,但没有成功。