专业编程基础技术教程

网站首页 > 基础教程 正文

22.淡入淡出(什么叫淡入)

ccvgpt 2024-08-02 12:01:09 基础教程 11 ℃

1.新建Panel,命名为FadeScreen

2.UIController中

添加淡入淡出参数

//淡入淡出
public Image fadeScreen;
public float fadeSpeed;
private bool shouldFadeToBlack;
private bool shouldFadeFromBlack;

设置绑定节点和设置值

22.淡入淡出(什么叫淡入)

Update()中,控制淡入淡出

if(shouldFadeToBlack)
{
  fadeScreen.color = new Color(fadeScreen.color.r, fadeScreen.color.g, fadeScreen.color.b, Mathf.MoveTowards(fadeScreen.color.a, 1f, fadeSpeed * Time.deltaTime));
  if(fadeScreen.color.a == 1f)
  {
  	shouldFadeToBlack = false;
  }
}
if (shouldFadeFromBlack)
{
  fadeScreen.color = new Color(fadeScreen.color.r, fadeScreen.color.g, fadeScreen.color.b, Mathf.MoveTowards(fadeScreen.color.a, 0f, fadeSpeed * Time.deltaTime));
  if (fadeScreen.color.a == 0f)
  {
  	shouldFadeFromBlack = false;
  }
}

添加函数,控制淡入淡出

public void FadeToBlack()
{
  shouldFadeToBlack = true;
  shouldFadeFromBlack = false;
}
public void FadeFromBlack()
{
  shouldFadeFromBlack = true;
  shouldFadeToBlack = false;
}

3.LevelManager中

角色死亡时,添加淡入效果

重新复活时,添加淡出效果

private IEnumerator RespawnCo()
{
  PlayerController.sInstance.gameObject.SetActive(false);
  //死亡音效
  AudioManager.sInstance.playSFX(8);
  yield return new WaitForSeconds(waitToRespawn - 1f / UIController.sInstance.fadeSpeed);
  //淡出效果
  UIController.sInstance.FadeToBlack();
  yield return new WaitForSeconds(1f / UIController.sInstance.fadeSpeed);
  //淡入效果
  UIController.sInstance.FadeFromBlack();
  PlayerController.sInstance.gameObject.SetActive(true);
  PlayerController.sInstance.transform.position = CheckpointController.sInstance.spawnPoint;
  //重置生命值
  PlayerHealthController.sInstance.currentHealth = PlayerHealthController.sInstance.maxHealth;
  UIController.sInstance.UpdateHealthDisplay();
}

4.游戏开始时淡出效果

设置FadeScreen颜色透明度A为255,默认状态下为黑色

在Start()中添加淡出效果代码

//游戏开始时添加淡入效果
FadeFromBlack();

这样就能从黑色淡出到正常游戏颜色

5.设置UI隐藏,以便编辑游戏

淡入淡出效果设置后,游戏界面部分被黑色的FadeScreen遮住,此时可设置Layer显示隐藏

这样在编辑游戏时,可排除UI遮住的影响。

需要编辑UI时,再设置UI Layer显示即可。

Tags:

最近发表
标签列表