should I use Invoke or Update?
Hey, can you please tell me what is more efficient. After I press a button in my game I set a bool variable to true and then I want to check if a bool varable is true and then lerp something till t equals to 1. so my question is: should I use update and check if the variable is true every frame or invoke a function that will get invoked till t is equal to 1.
Example for Update solution:
void OnPress()
{
startLerp=true;
}
void Update()
{
if(startLerp)
{
if(t<1)
{
// do this
t+=Time.deltaTime;
}
else
startLerp=false; // to make sure this action wont happen anymore
}
}
Example for Invoke solution:
void OnPress()
{
StartLerp();
}
void StartLerp()
{
if(t<1)
{
// do this
t+=Time.deltaTime;
Invoke("StartLerp",timeParameter);
}
// when t will be greater or equal to 1, the function wont get invoked
}
I like Update here. It synchronizes your changes to t with the frame rate, which may be what you want if your goal is to change something the player can see on the screen. With Invoke, you aren't locking your changes to frames. Also, note that your StartLerp method always runs whatever code follows your "if(t<1)" block, whether Invoke is called or not. (The manual page on Invoke doesn't say anything about multithreading, so I have to allow for the possibility that the method specified in Invoke's first parameter is run on its own thread, which could cause problems of its own.)
Your answer
Follow this Question
Related Questions
Multiple small update calls vs one large update call? 1 Answer
Update to Unity 2021 Beta = huge performance hit 0 Answers
Using Update() vs detecting when to update and performing a single function call 0 Answers
why did my framerate down from 60 to 40 with uprading to 5.2? 0 Answers
Multiple updates or an update for multiple objects? (Performance-wise) 1 Answer