using DG.Tweening; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; using XFrame.Core.UI; using XFrame.Core.Utils; public class MainPanel : XUIPanel { bool menuShow = true; RectTransform btnBG; Image arrow; Image downArrow; RectTransform outMinBg; public MainPanel() : base(UIType.Fixed, UIMode.None, UICollider.None) { uiPath = "UIPrefab/MainPanel"; } public override void Awake(GameObject go) { arrow = this.transform.Find("BG/BtnBG/btn-arrow").GetComponent<Image>(); downArrow = this.transform.Find("BG/TitleBG/img-downarrow").GetComponent<Image>(); btnBG = this.transform.Find("BG/BtnBG").GetComponent<RectTransform>(); outMinBg = this.transform.Find("BG/TitleBG/img-outminbg").GetComponent<RectTransform>(); this.transform.Find("BG/BtnBG/btn-warning").GetComponent<Button>().onClick.AddListener(() => { ShowPanel<WarningPanel>(); }); this.transform.Find("BG/BtnBG/btn-analysis").GetComponent<Button>().onClick.AddListener(() => { ShowPanel<AnalysisPanel>(); }); arrow.GetComponent<Button>().onClick.AddListener(() => { ShowHideMenu(); }); EventTrigger downArrowTrigger = downArrow.gameObject.AddComponent<EventTrigger>(); downArrowTrigger.AddListener(EventTriggerType.PointerEnter, OnMoveEnterDownArrow); EventTrigger outMinBgTrigger = outMinBg.gameObject.AddComponent<EventTrigger>(); outMinBgTrigger.AddListener(EventTriggerType.PointerExit, OnMoveExitDownArrow); } private void ShowHideMenu() { if (menuShow) { btnBG.DOAnchorPos(new Vector3(-170, 0, 0), 0.5f).SetEase(Ease.InOutBack).OnComplete(() => { arrow.sprite = SpriteUtils.CreateSprite("Texture/UI/Button/arrowRight"); menuShow = false; }); } else { btnBG.DOAnchorPos(new Vector3(0, 0, 0), 0.5f).SetEase(Ease.InOutBack).OnComplete(() => { arrow.sprite = SpriteUtils.CreateSprite("Texture/UI/Button/arrowLeft"); menuShow = true; }); } } private void OnMoveEnterDownArrow(PointerEventData eventData) { outMinBg.gameObject.SetActive(true); outMinBg.DOScale(new Vector3(1, 1, 1), 0.1f).SetEase(Ease.Linear); } private void OnMoveExitDownArrow(PointerEventData eventData) { outMinBg.DOScale(new Vector3(1, 0, 1), 0.1f).SetEase(Ease.Linear).OnComplete(() => { outMinBg.gameObject.SetActive(false); }); } }