我希望你能回答这个问题。我觉得很容易,但我被卡住了。我有一个叫做“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();
}
}
}