| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.SceneManagement;
- using UnityEngine.UI;
- namespace WildAttack
- {
- /// <summary>
- /// UI管理类
- /// </summary>
- public class UIManager : Singleton<UIManager>
- {
- #region Members
- public Transform uiRoot;
- private Transform hpBarRoot;
- private Transform flotageRoot;
- private MainPanel mainPanel;
- private GameOverPanel gameOverPanel;
- private HPBarPanel hpBarPanel;
- private CrossHair crossHair;
- public CanvasScaler uiRootCanvasScaler;
- UserGameAnalyse1 userGameAnalyse1;
- #endregion
- #region Functions
- public void Init(UserGameAnalyse1 _userGameAnalyse1,Action callBack)
- {
- userGameAnalyse1 = _userGameAnalyse1;
- uiRoot = GameObject.Find("UIRoot").transform;
- uiRootCanvasScaler = uiRoot.GetComponent<CanvasScaler>();
- //ScaleWithScreen();
- hpBarRoot = GameObject.Find("HpBarRoot").transform;
- flotageRoot = GameObject.Find("FlotageRoot").transform;
- mainPanel = GameObject.Instantiate<GameObject>(Resources.Load<GameObject>("UI/MainPanel"), uiRoot).GetComponent<MainPanel>();
- mainPanel.onQuitCallback += onShowResultView;
- gameOverPanel = GameObject.Instantiate<GameObject>(Resources.Load<GameObject>("UI/GameOverPanel"), uiRoot).GetComponent<GameOverPanel>();
- hpBarPanel = GameObject.Instantiate<GameObject>(Resources.Load<GameObject>("UI/HPBarPanel"), hpBarRoot).GetComponent<HPBarPanel>();
- crossHair = GameObject.Instantiate<GameObject>(Resources.Load<GameObject>("UI/CrossHairPanel"), uiRoot).GetComponentInChildren<CrossHair>();
- GameObject.Instantiate<GameObject>(Resources.Load<GameObject>("UI/FlotagePanel"), flotageRoot);
- gameOverPanel.gameObject.SetActive(false);
- crossHair.gameObject.SetActive(false);
- callBack();
- }
- /**
- * 点击结束按钮再触发
- */
- GameResultView gameResultView;
- int num = 0;
- public void onShowResultView()
- {
- if (num == 0)
- {
- Debug.Log("退出游戏");
- //退出按钮时候上传一次分数
- GameMananger.GetInstance().OnUploadScore();
- //结束游戏页面
- gameResultView = userGameAnalyse1?.showResultView(() =>
- {
- UnityEngine.SceneManagement.SceneManager.LoadScene("Home", UnityEngine.SceneManagement.LoadSceneMode.Single);
- });
- num += 1;
- return;
- }
- if(num == 1)
- {
- gameResultView?.OnClick_Back();
- SceneManager.LoadScene("Home", LoadSceneMode.Single);
- Debug.Log("退出当前场景");
- }
- }
- /// <summary>
- /// 计算canvas缩放 uiScaleMode为constantPixelSize时
- /// </summary>
- public void ScaleWithScreen()
- {
- float w = Screen.width / 1280f;
- float h = Screen.height / 720f;
- if (w < h)
- uiRootCanvasScaler.scaleFactor = w;
- else
- uiRootCanvasScaler.scaleFactor = h;
- }
- /// <summary>
- /// 开始游戏和重开对应ui
- /// </summary>
- /// <param name="active"></param>
- public void SetDefaultProcess(bool active)
- {
- // active
- mainPanel.SetProcessInfoActive(active);
- hpBarPanel.SetProcessInfoActive(active);
- }
- /// <summary>
- /// 游戏结束
- /// </summary>
- /// <param name="isWin"></param>
- public void GameOver(bool isWin)
- {
- if (!gameOverPanel.gameObject.activeSelf)
- {
- gameOverPanel.gameObject.SetActive(true);
- crossHair.gameObject.SetActive(false);
- gameOverPanel.ShowGameOverPanel(isWin);
- //GameMananger.GetInstance().ResetAim();
- //crossHair.ResetCrossHair();
- }
- }
- public void HideMainPanel()
- {
- mainPanel.gameObject.SetActive(false);
- hpBarPanel.gameObject.SetActive(false);
- }
- public void Restart()
- {
- mainPanel.gameObject.SetActive(true);
- mainPanel.GetComponent<MainPanel>().RenderUserInfo();
- hpBarPanel.gameObject.SetActive(true);
- gameOverPanel.gameObject.SetActive(false);
- crossHair.gameObject.SetActive(false);
- }
- #region HpBar
- /// <summary>
- /// 血条相关
- /// </summary>
- public void AddHp()
- {
- hpBarPanel.AddHp();
- }
- public void SubHp()
- {
- hpBarPanel.SubHp();
- }
- public void ResetHpBar()
- {
- hpBarPanel.ResetHpBar();
- }
- #endregion
- /// <summary>
- /// 计算canvas缩放 uiScaleMode为ScaleWithScreenSize时
- /// </summary>
- private float ScaleFactor => Screen.width / uiRootCanvasScaler.referenceResolution.x * (1 - uiRootCanvasScaler.matchWidthOrHeight) + Screen.height / uiRootCanvasScaler.referenceResolution.y * uiRootCanvasScaler.matchWidthOrHeight;
- /// <summary>
- /// 获取准星位置
- /// </summary>
- /// <returns></returns>
- public Vector2 GetCrossHairPos()
- {
- return crossHair._rectTransform.anchoredPosition * ScaleFactor;
- }
- #endregion
- }
- }
|