我对协程有一个奇怪的问题。
基本上当我鼠标悬停在精灵上时,只要鼠标指针在它上面就会淡入和淡出,这样可以正常工作,但是当鼠标退出精灵时我希望精灵淡出直到其alpha值达到0。
要做到这一点,并且因为与鼠标悬停在对撞机上时每个帧调用的OnMouseOver函数不同,我使用在我的OnMouseExit函数中调用的协程。
下面的代码是我使用的,但是只要鼠标退出精灵,精灵的alpha就会立即设置为0,不会消失,我不知道为什么,因此我的帖子。
你会注意到在OnMouseExit函数中最后一行被注释掉了,我试图用两种方法调用协同程序,它会被调用两次,但在任一调用中都不会发生淡出。
43 32 56 12 4
此致
Crouz
答案 0 :(得分:0)
您需要Coroutine函数中的计数器变量从0
到fade_speed
计数。您可以使用while
在Time.deltaTime
循环中增加此变量。当该变量为> = fade_speed
时,退出while
循环。要在整个循环中获得新颜色,可以执行new Color(1, 1, 1, Mathf.Lerp(startingAlpha, 0, counter / fade_speed))
;。
您的新FadeOut
功能:
IEnumerator FadeOut(float alpha_start)
{
//This will start decreasing from where it is
float startingAlpha = sprite.color.a;
float counter = 0;
while (counter < fade_speed)
{
counter = counter + Time.deltaTime;
sprite.color = new Color(1, 1, 1, Mathf.Lerp(startingAlpha, 0, counter / fade_speed));
yield return null;
}
}