TipMessagePanel.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using Fort23.Core;
  2. using UnityEngine;
  3. using UnityEngine.UI;
  4. namespace Fort23.Mono
  5. {
  6. [UIBinding(prefab = "TipMessagePanel")]
  7. public partial class TipMessagePanel : UIPanel
  8. {
  9. public static async void OpenTipMessagePanel(string meg, Vector2 worldPos)
  10. {
  11. TipMessagePanel tipMessagePanel =
  12. await UIManager.Instance.LoadAndOpenPanel<TipMessagePanel>(null, UILayer.Top);
  13. tipMessagePanel.SetTipMessage(meg, worldPos);
  14. }
  15. private void Init()
  16. {
  17. }
  18. protected override void AddEvent()
  19. {
  20. }
  21. protected override void DelEvent()
  22. {
  23. }
  24. public override void AddButtonEvent()
  25. {
  26. button_bg.onClick.AddListener(OnClickButton_bg);
  27. }
  28. private void OnClickButton_bg()
  29. {
  30. UIManager.Instance.HideUIUIPanel(this);
  31. }
  32. public void SetTipMessage(string msg, Vector2 pos)
  33. {
  34. pos = this.transform.worldToLocalMatrix * pos;
  35. if (pos.x > 186)
  36. {
  37. pos.x = 186;
  38. }
  39. if (pos.x < -186)
  40. {
  41. pos.x = -186;
  42. }
  43. message.text = msg;
  44. RectTransform rectTransform = message.GetComponent<RectTransform>();
  45. message.SetLayoutDirty();
  46. LayoutRebuilder.MarkLayoutForRebuild(rectTransform);
  47. LayoutRebuilder.ForceRebuildLayoutImmediate(rectTransform);
  48. rectTransform.GetComponent<ContentSizeFitter>().SetLayoutVertical();
  49. RectTransform bgTran = bg_icon.GetComponent<RectTransform>();
  50. // await TimerComponent.Instance.WaitAsync(30);
  51. // float y= LayoutUtility.GetPreferredSize(massge.GetComponent<RectTransform>(), 0)+40;
  52. // massge.
  53. // massge.OnRebuildRequested();
  54. float y = rectTransform.sizeDelta.y + 40;
  55. if (y < 100)
  56. {
  57. y = 100;
  58. }
  59. bgTran.sizeDelta = new Vector2(bgTran.sizeDelta.x, y);
  60. float maxY = this.transform.sizeDelta.y / 2;
  61. float my2 = y / 2;
  62. if (pos.y > maxY - my2)
  63. {
  64. pos.y = maxY - my2;
  65. }
  66. if (pos.y < my2 - maxY)
  67. {
  68. pos.y = my2 - maxY;
  69. }
  70. dotPoint.anchoredPosition = pos;
  71. LayoutRebuilder.MarkLayoutForRebuild(bgTran);
  72. LayoutRebuilder.ForceRebuildLayoutImmediate(bgTran);
  73. }
  74. }
  75. }