using DG.Tweening; using System; using System.Collections; using TMPro; using UnityEngine; using UnityEngine.UI; public class UI_CustomSessionPanel : BasePanel { private string triggerID; public Action callBack; private float typingSpeed = 0.05f; public Sprite[] icon; public Image headIcon; public RectTransform MidPanel; public RectTransform ContentPanel; public ContentSizeFitter ContentSize; private float minHeight = 43.0f; /// /// 初始化,state 0 激活另一个操作 /// iconIndex=0:客户,iconIndex=1:负责人 /// public void Init(string triggerID, string clientTalk, string _clientName, int iconIndex, Action _callBack) { this.triggerID = triggerID; callBack = _callBack; GetControl("ClientText_DialogBox").DOKill(); GetControl("ClientText_DialogBox").text = ""; GetControl("ClientName").text = _clientName; headIcon.sprite = icon[iconIndex]; //UItext = GetControl("ClientText_DialogBox"); StartTypewriterEffect(clientTalk); } public override void ShowMe() { base.ShowMe(); GameManager.EventMgr.EventTrigger(Enum_EventType.PlayerCanMove, false); } public override void HideMe() { base.HideMe(); GameManager.EventMgr.EventTrigger(Enum_EventType.PlayerCanMove, true); } //} /// /// 按钮点击 /// /// protected override void OnClick(string btnName) { switch (btnName) { case "ClientContinueBtn": GameManager.UIMgr.HidePanel(); callBack?.Invoke(triggerID); break; } } void StartTypewriterEffect(string msg) { // 使用DoTween的DOText方法实现打字机效果 GetControl("ClientText_DialogBox").DOText(msg, msg.Length * typingSpeed) .SetEase(Ease.Linear); } void Update() { RectTransform pt_Dialog = MidPanel.GetComponentInChildren().GetComponent(); if (Mathf.Abs(pt_Dialog.sizeDelta.y - minHeight) > 0.01f) { if (pt_Dialog.sizeDelta.y > minHeight) MidPanel.sizeDelta = new Vector2(MidPanel.sizeDelta.x, pt_Dialog.sizeDelta.y); else MidPanel.sizeDelta = new Vector2(MidPanel.sizeDelta.x, minHeight); ContentSize.enabled = false; LayoutRebuilder.ForceRebuildLayoutImmediate(ContentPanel); ContentSize.enabled = true; } } }