using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class GameManager : MonoBehaviour
{
//准备发射的位置
//public Transform startpos;
//分数变量
private int score = 0;
//分数Text文本UI
public Text scoretext;
//预制体生成的位置
public Transform pinpos;
//预制体
public GameObject pinprefab;
//创建Pin脚本的成员
private Pin FirePin;
//单例(在其他脚本里可以用_instance点出该脚本的函数和成员变量)
public static GameManager _instance;
//游戏结束开关
private bool IsGameOver = false;
//摄像机
private Camera maincamera;
private void Awake()
{
//单例模式
_instance = this;
}
// Start is called before the first frame update
void Start()
{
//startpos = GameObject.Find("StarPos").transform;
//得到生成位置PinPos的位置
pinpos = GameObject.Find("PinPos").transform;
//获取摄像机
maincamera = Camera.main;
//实例化预制体
AddPin();
}
// Update is called once per frame
void Update()
{
//如果IsGameOver开关为true就return掉,不执行后面的逻辑
if (IsGameOver==true)
return;
//鼠标左键按下
if (Input.GetMouseButtonDown(0))
{
//分数增加
score++;
//分数显示文本内容为score
scoretext.text = score.ToString();
//调用Pin脚本里的StarFly函数
FirePin.StarFly();
//实例化预制体
AddPin();
}
}
void AddPin()
{
//预制体实例化
FirePin = GameObject.Instantiate(pinprefab, pinpos.position, pinprefab.transform.rotation).GetComponent<Pin>();
}
public void GameOver()
{
//如果IsGameOver为true就return掉,不执行后面的逻辑
if (IsGameOver)
return;
//让Rotation脚本不可用(不执行--旋转)
GameObject.Find("Circle").GetComponent<Rotation>().enabled = false;
//游戏结束开关打开,并执行协程
IsGameOver = true;
StartCoroutine("GameOverAnimation");
}
//协程,播放游戏结束页面缓动动画并重新加载场景开始游戏
IEnumerator GameOverAnimation()
{
while (true)
{
//摄像机背景色的差值运算
maincamera.backgroundColor = Color.Lerp(maincamera.backgroundColor, Color.gray, 3 * Time.deltaTime);
//摄像机的orthographicSize的差值运算
maincamera.orthographicSize = Mathf.Lerp(maincamera.orthographicSize, 3, 3 * Time.deltaTime);
//当Size到达3时就中断这个while循环
if (Mathf.Abs(maincamera.orthographicSize - 3) <= 0.02f)
{
break;
}
//等待一帧
yield return 0;
}
//等待两秒之后加载场景重新开始游戏
yield return new WaitForSeconds(2);
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
}