Hey everyone!
I didn’t find anything in the Unity documentation on this specific topic.
There are some examples on static methods similar to this, though:
SomeMath.cs
public static class SomeMath {
public static int Add (int a, int b) {
return a+b
}
}
So I did some testing with something similar to this:
BlinkObject.cs
IEnumerator Start () {
yield return new WaitForSeconds(5.0f);
Blink.Blink1(this.gameObject.GetComponent<Renderer>(),0.2f,1.0f);
}
Blink.cs
public static class Blink {
public static IEnumerator Blink1 (Renderer _Renderer, float brightness0, float brightness1) {
_Renderer.material.SetFloat("_Emission",brightness1);
yield return WaitForSeconds(1.0f);
_Renderer.material.SetFloat("_Emission",brightness0);
}
}
, which worked fine.
But what about using this for a chain of lights that maybe uses different delay times and calculates data while the coroutine is running?
BlinkObject.cs
IEnumerator Start () {
yield return new WaitForSeconds(5.0f);
Blink.Blink1(this.gameObject.GetComponent<Renderer>(),0.2f,Random.Range(0.5f,2.0f));
}
Blink.cs
public static class Blink {
public static IEnumerator Blink1 (Renderer _Renderer, float brightness0, float brightness1, float waitTime) {
YieldInstruction wait1 = new WaitForSeconds(waitTime);
float brightness05 = brightness1/2.0f;
_Renderer.material.SetFloat("_Emission",brightness05);
yield return wait1;
_Renderer.material.SetFloat("_Emission",brightness0);
yield return wait1;
_Renderer.material.SetFloat("_Emission",brightness1);
yield return wait1;
_Renderer.material.SetFloat("_Emission",brightness0);
}
}
Best wishes,
Shu