用c#写一个进入场景后,场景中的图片“一”渐隐渐现消失之后平滑显示图片“二”渐现渐隐消失的代码
时间: 2023-09-08 10:09:50 浏览: 66
好的,以下是一个可以实现图片渐隐渐现的示例代码:
```csharp
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class ImageFade : MonoBehaviour
{
public Image image1;
public Image image2;
public float fadeSpeed = 0.5f;
public float delayTime = 1.0f;
private bool isFading = false;
void Start()
{
StartCoroutine(FadeImages());
}
IEnumerator FadeImages()
{
while (true)
{
isFading = true;
// 图片1渐隐
yield return StartCoroutine(FadeOutImage(image1));
isFading = false;
// 图片2渐显
yield return StartCoroutine(FadeInImage(image2));
// 等待一段时间
yield return new WaitForSeconds(delayTime);
// 图片2渐隐
yield return StartCoroutine(FadeOutImage(image2));
// 图片1渐显
yield return StartCoroutine(FadeInImage(image1));
// 等待一段时间
yield return new WaitForSeconds(delayTime);
}
}
IEnumerator FadeOutImage(Image image)
{
Color color = image.color;
while (color.a > 0)
{
color.a -= Time.deltaTime * fadeSpeed;
image.color = color;
yield return null;
}
color.a = 0;
image.color = color;
}
IEnumerator FadeInImage(Image image)
{
Color color = image.color;
while (color.a < 1)
{
color.a += Time.deltaTime * fadeSpeed;
image.color = color;
yield return null;
}
color.a = 1;
image.color = color;
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
if (isFading)
{
StopAllCoroutines();
image1.color = new Color(1, 1, 1, 1);
image2.color = new Color(1, 1, 1, 0);
isFading = false;
}
else
{
StartCoroutine(FadeImages());
}
}
}
}
```
在这个示例代码中,我们使用了两张图片Image对象,并在Start方法中启动了FadeImages协程。在FadeImages协程中,我们使用了两个协程FadeOutImage和FadeInImage来控制图片的渐隐渐现效果。在每次渐变之间,我们使用了WaitForSeconds协程来等待一段时间。在Update方法中,我们检测了用户是否按下了Escape键,如果正在渐变中,则停止所有协程并立即显示图片1,否则重新启动FadeImages协程。你可以在Unity编辑器中将这个脚本挂载到一个空对象上,并将两张图片分别设置为子对象,运行游戏即可看到渐隐渐现的效果。
阅读全文