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