PKMatchView.cs 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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. [SerializeField] Sprite[] matchHeadBGList;
  9. void Awake()
  10. {
  11. InitBtnTabs();
  12. InitBtnStartMatch();
  13. InitMatchHeadBG();
  14. }
  15. void Start()
  16. {
  17. HomeMgr.CacheView(this);
  18. (Sprite avatar, string nickname) = RoleMgr.GetRoleInfo(0);
  19. RenderPlayerInfo(1, avatar, nickname, true);
  20. RenderPlayerInfo(2, null, "", false);
  21. }
  22. void OnDestroy()
  23. {
  24. HomeMgr.RemoveCacheView(this);
  25. }
  26. #region 左栏条目切换
  27. [SerializeField] Sprite[] btnTabTextures;
  28. Button[] btnTabs = {null, null};
  29. void InitBtnTabs() {
  30. btnTabs[0] = this.transform.Find("LineV/BtnTab0").GetComponent<Button>();
  31. btnTabs[1] =this.transform.Find("LineV/BtnTab1").GetComponent<Button>();
  32. for (int i = 0; i < btnTabs.Length; i++) {
  33. Button btnTab = btnTabs[i];
  34. int btnTabIndex = i;
  35. btnTab.onClick.AddListener(() => {
  36. AudioMgr.ins.PlayBtn();
  37. ChangeMatchHeadBG(btnTabIndex);
  38. if (!IsBtnTabSelected(btnTab)) {
  39. SetBtnTabSelected(btnTab);
  40. }
  41. });
  42. }
  43. }
  44. bool IsBtnTabSelected(Button btn) {
  45. Image img = btn.GetComponent<Image>();
  46. return img.sprite.name.Equals(btnTabTextures[1].name);
  47. }
  48. void SetBtnTabSelected(Button btn) {
  49. foreach (var item in btnTabs) {
  50. Image img = item.GetComponent<Image>();
  51. img.sprite = item == btn ? btnTabTextures[1] : btnTabTextures[0];
  52. }
  53. }
  54. #endregion
  55. void InitBtnStartMatch() {
  56. this.transform.Find("BoxRight/BtnMatch").GetComponent<Button>().onClick.AddListener(() => {
  57. AudioMgr.ins.PlayBtn();
  58. GameObject.Instantiate(GameObject.Find("WindowViews").transform.Find("PKMatchingView").gameObject).SetActive(true);
  59. });
  60. }
  61. void RenderPlayerInfo(int playerID, Sprite avatar, string nickname, bool active) {
  62. this.transform.Find($"BoxRight/Player{playerID}/NameBox")
  63. .GetComponentInChildren<Text>().text = active ? nickname : "等待加入";
  64. Transform avatarT = this.transform.Find($"BoxRight/Player{playerID}/MatchHeadBG/Avatar");
  65. avatarT.gameObject.SetActive(active);
  66. avatarT.Find("Sprite").GetComponent<Image>().sprite = avatar;
  67. }
  68. void InitMatchHeadBG() {
  69. this.transform.Find("BoxRight/Player2/MatchHeadBG").GetComponent<Button>().onClick.AddListener(() => {
  70. Debug.Log("选择好友");
  71. });
  72. }
  73. void ChangeMatchHeadBG(int typeIndex) {
  74. Image img = this.transform.Find("BoxRight/Player2/MatchHeadBG").GetComponent<Image>();
  75. img.sprite = matchHeadBGList[typeIndex];
  76. img.GetComponent<Button>().enabled = typeIndex == 1;
  77. }
  78. public void Back() {
  79. AudioMgr.ins.PlayBtn();
  80. Destroy(this.gameObject);
  81. }
  82. }