How do you sleep an update() for a random interval of time?
You could store the time:
float waitTime = 0f;
void Start()
{
RandomizeWaitTime();
}
void Update()
{
if (Time.time < waitTime && waitTime != 0f)
{
//do stuff
waitTime = 0f;
}
}
void RandomizeWaitTime()
{
const float minimumWaitTime = 1f;
const float maximumWaitTime = 2f;
waitTime = Time.time + Random.Range(minimumWaitTime, maximumWaitTime);
}
But this is what coroutines are for, this same code could be rewritten as:
void Start()
{
StartCoroutine(DoStuff());
}
IEnumerator DoStuff()
{
const float minimumWaitTime = 1f;
const float maximumWaitTime = 2f;
yield return new WaitForSeconds(Random.Range(minimumWaitTime, maximumWaitTime));
//do stuff
}
http://unity3d.com/support/documentation/ScriptReference/index.Coroutines_26_Yield.html
You can't, Update runs once every frame without exception.