123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 |
- using DG.Tweening;
- using I2.Loc;
- using QFramework;
- using Sirenix.OdinInspector;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.EventSystems;
- using UnityEngine.UI;
- /// <summary>
- /// 底部按钮
- /// </summary>
- public class DownBGButton : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
- {
- public string m_BtnName;
- private RectTransform m_RectTransform;
- private Button m_Btn;
- private Text m_BtnText;
- private Image m_BtnIcon;
- private Image m_PromptIcon;
- private Image m_HighlighterArea;
- private Image m_SelectLine;
- public Button Button
- {
- get
- {
- if (m_Btn == null)
- {
- m_Btn = GetComponent<Button>();
- }
- return m_Btn;
- }
- }
- [LabelText("常态Icon")]
- public Sprite m_NormalIcon;
- [LabelText("划入Icon")]
- public Sprite m_HoverIcon;
- [LabelText("选中Icon")]
- public Sprite m_SelectIcon;
- [LabelText("常态颜色")]
- public Color m_NormalColor;
- [LabelText("划入颜色")]
- public Color m_HoverColor;
- [LabelText("选中字体颜色")]
- public Color m_SelectColor;
- [LabelText("常态字体")]
- public Font m_NormalFont;
- [LabelText("划入字体")]
- public Font m_HoverFont;
- [LabelText("选中字体")]
- public Font m_SelectFont;
- //是否是状态切换类按钮 true:状态切换 false :点击类
- public bool isToggle = false;
- private bool isSelect = false;
- public bool IsSelect
- {
- get
- {
- return isToggle && isSelect;
- }
- }
- private bool isPrompting = false;
- private bool isHover = false;
- public void Awake()
- {
- Load();
- }
- private void Load()
- {
- m_RectTransform = GetComponent<RectTransform>();
- m_Btn = GetComponent<Button>();
- m_BtnIcon = this.transform.Find("Icon").GetComponent<Image>();
- m_BtnText = m_BtnIcon.transform.Find("Text").GetComponent<Text>();
- m_HighlighterArea = this.transform.Find("SelectArea").GetComponent<Image>();
- m_SelectLine = this.transform.Find("Line").GetComponent<Image>();
- m_PromptIcon = this.transform.Find("PromptIcon").GetComponent<Image>();
- m_HighlighterArea.gameObject.SetActive(false);
- m_SelectLine.gameObject.SetActive(false);
- }
- public void RefrushButonSize()
- {
- m_RectTransform.SetWidth(20 + m_BtnIcon.rectTransform.sizeDelta.x + 8 + m_BtnText.preferredWidth + 20);
- m_PromptIcon.rectTransform.sizeDelta = m_RectTransform.sizeDelta;
- }
- #if UNITY_EDITOR
- [Button("刷新按钮")]
- public void RefrushButtonSizeEditor()
- {
- Load();
- m_BtnText.text = m_BtnName;
- RefrushButonSize();
- SetBtnState(BtnState.normal);
- }
- #endif
- public void SetBtnState(BtnState state)
- {
- isHover = false;
- switch (state)
- {
- case BtnState.normal:
- m_BtnIcon.sprite = m_NormalIcon;
- m_BtnText.font = m_NormalFont;
- m_BtnText.color = m_NormalColor;
- m_HighlighterArea.gameObject.SetActive(false);
- m_SelectLine.gameObject.SetActive(false);
- if (isToggle)
- {
- isSelect = false;
- }
- break;
- case BtnState.highter:
- m_BtnIcon.sprite = m_HoverIcon;
- m_BtnText.font = m_HoverFont;
- m_BtnText.color = m_HoverColor;
- m_HighlighterArea.gameObject.SetActive(true);
- m_SelectLine.gameObject.SetActive(true);
- isHover = true;
- break;
- case BtnState.select:
- m_BtnIcon.sprite = m_SelectIcon;
- m_BtnText.font = m_SelectFont;
- m_BtnText.color = m_SelectColor;
- m_HighlighterArea.gameObject.SetActive(false);
- m_SelectLine.gameObject.SetActive(true);
- if (isToggle)
- {
- isSelect = true;
- }
- break;
- }
- }
- public void OnPointerEnter(PointerEventData eventData)
- {
- HoverClosePrompt();
- SetBtnState(BtnState.highter);
- }
- public void OnPointerExit(PointerEventData eventData)
- {
- if (IsSelect)
- {
- SetBtnState(BtnState.select);
- }
- else
- {
- SetBtnState(BtnState.normal);
- }
- HoverOpenPrompt();
- }
- void OnEnable()
- {
- LocalizationManager.OnLocalizeEvent += LocalizationManager_OnLocalizeEvent;
- LocalizationManager_OnLocalizeEvent();
- }
- void OnDisEnable()
- {
- LocalizationManager.OnLocalizeEvent -= LocalizationManager_OnLocalizeEvent;
- }
- private void LocalizationManager_OnLocalizeEvent()
- {
- RefrushButonSize();
- if(isPrompting)
- {
- m_PromptIcon.rectTransform.DOKill();
- m_PromptIcon.rectTransform.sizeDelta = m_RectTransform.sizeDelta;
- m_PromptIcon.rectTransform.DOSizeDelta(new Vector2(m_RectTransform.sizeDelta.x - 34, m_BtnText.rectTransform.sizeDelta.y + 2), 1).SetLoops(-1, LoopType.Yoyo);
- }
- }
- /// <summary>
- /// 开启按钮提示
- /// </summary>
- public void OpenPrompt()
- {
- if (isPrompting) return;
- m_PromptIcon.gameObject.SetActive(true);
- m_PromptIcon.rectTransform.sizeDelta = m_RectTransform.sizeDelta;
- m_PromptIcon.rectTransform.DOSizeDelta(new Vector2(m_RectTransform.sizeDelta.x - 34, m_BtnText.rectTransform.sizeDelta.y + 2), 1).SetLoops(-1, LoopType.Yoyo);
- isPrompting=true;
- }
- /// <summary>
- /// 关闭按钮提示
- /// </summary>
- public void ClosePrompt()
- {
- if (!isPrompting || !m_PromptIcon.gameObject.activeSelf) return;
- isPrompting=false;
- m_PromptIcon.rectTransform.DOKill();
- m_PromptIcon.gameObject.SetActive(false);
- m_PromptIcon.rectTransform.sizeDelta = m_RectTransform.sizeDelta;
- }
- public void HoverOpenPrompt()
- {
- if (isPrompting)
- {
- m_PromptIcon.rectTransform.DOPlay();
- m_PromptIcon.gameObject.SetActive(true);
- }
- }
- public void HoverClosePrompt()
- {
- if (isPrompting)
- {
- m_PromptIcon.rectTransform.DOPause();
- m_PromptIcon.gameObject.SetActive(false);
- }
- }
- //public void ShowToolLibraryHighter(bool highter, bool recordHighter = true)
- //{
- // if (isLibraryEnter) return;
- // if (highter && !toolLibraryPromptIcon.gameObject.activeSelf)
- // {
- // toolLibraryPromptIcon.gameObject.SetActive(true);
- // toolLibraryPromptIcon.rectTransform.DOSizeDelta(new Vector2(87, 31), 1).SetLoops(-1, LoopType.Yoyo);
- // }
- // else if (!highter && toolLibraryPromptIcon.gameObject.activeSelf)
- // {
- // toolLibraryPromptIcon.gameObject.SetActive(false);
- // toolLibraryPromptIcon.rectTransform.sizeDelta = new Vector2(112, 40);
- // toolLibraryPromptIcon.rectTransform.DOKill();
- // }
- // if (recordHighter)
- // {
- // m_IsHighter = highter;
- // }
- //}
- }
|