using XFramework; using UnityEngine.UI; using UnityEngine; using XFramework.Objects; /// /// ui面板通用的提示文字 0.5f内从小大大显示 显示2秒 2秒内逐渐消失 /// public class DynamicText : MonoBehaviour { Text text_thisText; float hideTime; float scale; CanvasGroup canvasGroup_this; RectTransform RectTransform_this; void Awake() { InitEvent(); } void InitEvent() { text_thisText = this.GetComponent(); canvasGroup_this = this.GetComponent(); RectTransform_this = this.GetComponent(); } /// /// 显示提示文字 /// /// 文字信息 /// 文字颜色 /// 文字位置 public void ShowPromptText(string msg,Color textColor,Vector2 anchordPos) { text_thisText.text = msg; text_thisText.color = textColor; scale = 0.1f; hideTime = 3; canvasGroup_this.alpha = 1; RectTransform_this.anchoredPosition = anchordPos; this.transform.localScale = new Vector3(scale, scale, 1); } private void FixedUpdate() { if (scale < 1)//先由小到大显示文字 { scale += Time.fixedDeltaTime * 2; this.transform.localScale = new Vector3(scale, scale, 1); } else//显示完成后文字上升 逐渐隐藏 { RectTransform_this.anchoredPosition +=Vector2.up * Time.fixedDeltaTime * 50; if (canvasGroup_this.alpha > 0f) canvasGroup_this.alpha -= Time.fixedDeltaTime / hideTime; } if (hideTime > 0)//计时 { hideTime -= Time.fixedDeltaTime; } else//超出计时器隐藏 { ObjectPool.Instance.Destroy(this.gameObject); } } }