1.新建Panel,命名为FadeScreen
2.UIController中
添加淡入淡出参数
//淡入淡出
public Image fadeScreen;
public float fadeSpeed;
private bool shouldFadeToBlack;
private bool shouldFadeFromBlack;
设置绑定节点和设置值
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显示即可。