usingUnityEngine;usingSystem.Collections;usingSystem;publicclassWaitForProgress:CustomYieldInstruction{privatefloatnextTime;privatefloatwaitTime;Action<float,bool>OnUpdate;privatebooluseCallback;privateboolnextUse=true;publicboolisDone{get{returnnextTime<=Time.realtimeSinceStartup;}}privatefloatm_progress;publicfloatprogress{get{m_progress=Mathf.Clamp01(1-(nextTime-Time.realtimeSinceStartup)/waitTime);returnm_progress;}}publicoverrideboolkeepWaiting{get{if(nextUse){nextUse=false;this.nextTime=Time.realtimeSinceStartup+waitTime;}if(useCallback){if(isDone)OnUpdate(1.0f,isDone);elseOnUpdate(progress,isDone);}if(isDone){nextUse=true;}return!isDone;}}publicWaitForProgress(floattime){waitTime=time;useCallback=false;OnUpdate=null;nextUse=true;}publicWaitForProgress(floattime,Action<float,bool>onUpdate){waitTime=time;OnUpdate=onUpdate;nextUse=true;if(onUpdate==null){Debug.LogWarning("Null callback has been set. callback won't be used");useCallback=false;}elseuseCallback=true;}}
Comments (0)
HTTPSSSH
You can clone a snippet to your computer for local editing.
Learn more.