43、结束关卡逻辑
资源导入
当僵尸走到房子旁边时触发的逻辑:
实现游戏结束的UI
实现游戏结束的UI的逻辑,在OverPanel.cs中添加代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class OverPanel : MonoBehaviour
{
private Image image;
private Image panel;
void Start()
{
image = transform.Find("Image").GetComponent<Image>();
panel = transform.Find("Panel").GetComponent<Image>();
image.gameObject.SetActive(false);
panel.gameObject.SetActive(false);
}
public void Over()
{
// 显示图片
image.gameObject.SetActive(true);
// 让panel逐渐变成黑色
panel.gameObject.SetActive(true);
StartCoroutine(PanelColorEF());
}
IEnumerator PanelColorEF()
{
float a = 0;
while (a < 1)
{
a += 0.02f;
panel.color = new Color(0, 0, 0, a);
yield return new WaitForSeconds(0.05f);
}
// 此时已经全黑,停顿2s,回到主界面
yield return new WaitForSeconds(2f);
DoBackMainScene();
}
private void DoBackMainScene()
{
SceneManager.LoadScene("Start");
}
}
然后在UIManager.cs中添加管理这个OverPanel的接口
由于游戏结束,不单单涉及到OverPanel这个UI,所以游戏结束的第一接口还是得在LVManager.cs
最后加载GameOver的音效
处理一个bug,当种植的豌豆射手在僵尸右边时,应该不能攻击的,在PeaShooter.cs中添加代码
测试: