PKMatchView.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.UI;
  6. public class PKMatchView : MonoBehaviour
  7. {
  8. [NonSerialized] public Action loadGameAction;
  9. void Awake()
  10. {
  11. InitBtnTabs();
  12. InitBtnStartMatch();
  13. }
  14. void Start()
  15. {
  16. HomeMgr.CacheView(this);
  17. (Sprite avatar, string nickname) = RoleMgr.GetRoleInfo(0);
  18. RenderPlayerInfo(1, avatar, nickname, true);
  19. RenderPlayerInfo(2, null, "", false);
  20. }
  21. void OnDestroy()
  22. {
  23. HomeMgr.RemoveCacheView(this);
  24. }
  25. #region 左栏条目切换
  26. [SerializeField] Sprite[] btnTabTextures;
  27. Button[] btnTabs = {null, null};
  28. void InitBtnTabs() {
  29. btnTabs[0] = this.transform.Find("LineV/BtnTab0").GetComponent<Button>();
  30. btnTabs[1] =this.transform.Find("LineV/BtnTab1").GetComponent<Button>();
  31. for (int i = 0; i < btnTabs.Length; i++) {
  32. Button btnTab = btnTabs[i];
  33. btnTab.onClick.AddListener(() => {
  34. AudioMgr.ins.PlayBtn();
  35. if (!IsBtnTabSelected(btnTab)) {
  36. SetBtnTabSelected(btnTab);
  37. }
  38. });
  39. }
  40. }
  41. bool IsBtnTabSelected(Button btn) {
  42. Image img = btn.GetComponent<Image>();
  43. return img.sprite.name.Equals(btnTabTextures[1].name);
  44. }
  45. void SetBtnTabSelected(Button btn) {
  46. foreach (var item in btnTabs) {
  47. Image img = item.GetComponent<Image>();
  48. img.sprite = item == btn ? btnTabTextures[1] : btnTabTextures[0];
  49. }
  50. }
  51. #endregion
  52. void InitBtnStartMatch() {
  53. this.transform.Find("BoxRight/BtnMatch").GetComponent<Button>().onClick.AddListener(() => {
  54. AudioMgr.ins.PlayBtn();
  55. loadGameAction?.Invoke();
  56. });
  57. }
  58. void RenderPlayerInfo(int playerID, Sprite avatar, string nickname, bool active) {
  59. this.transform.Find($"BoxRight/Player{playerID}/NameBox")
  60. .GetComponentInChildren<Text>().text = active ? nickname : "等待加入";
  61. Transform avatarT = this.transform.Find($"BoxRight/Player{playerID}/MatchHeadBG/Avatar");
  62. avatarT.gameObject.SetActive(active);
  63. avatarT.Find("Sprite").GetComponent<Image>().sprite = avatar;
  64. }
  65. public void Back() {
  66. AudioMgr.ins.PlayBtn();
  67. Destroy(this.gameObject);
  68. }
  69. }