我想在Unity中創建一些螢火蟲。我想增加光照強度,然後等待幾秒鐘,然後在Unity中減少它。當它們產生時,我希望它們增加光強度,等待幾秒鐘然後淡出。我怎樣才能以一種乾淨的方式創建這個「過程」?加班減少光照強度
private Light pointLight; // The light component of the firefly
private float minLuminosity = 0; // min intensity
private float maxLuminosity = 1; // max intensity
private float luminositySteps = 0.005f; // factor when increasing/decreasing
private float shineDuration = 3; // wait 3 seconds when faded in
private void Start()
{
pointLight = GetComponent<Light>();
pointLight.intensity = Random.Range(minLuminosity, maxLuminosity); // start with a random intensity
StartCoroutine(ChangeIntensity()); // start the process
}
private IEnumerator ChangeIntensity()
{
pointLight.intensity += luminositySteps; // increase the firefly intensity/fade in
yield return new WaitWhile(() => pointLight.intensity >= maxLuminosity); // wait for the maximum intensity
yield return new WaitForSeconds(shineDuration); // wait 3 seconds
pointLight.intensity -= luminositySteps;
yield return new WaitWhile(() => pointLight.intensity <= maxLuminosity); // wait for the minimum intensity
StartCoroutine(ChangeIntensity()); // do it again
}
如此明顯的協程在第一WaitWhile()
如何創建這樣的代碼鏈永遠停止?淡入淡出時,我的意思是改變光線強度。
你所說的 「淡出」 是什麼意思?你是說光的強度? – Programmer
是的,我只是想改變光線強度 – peterHasemann
出去做別的事情。回來看到一些答案,但他們需要改進,所以我加了我的。 – Programmer