// *********************************************************************** // Assembly : Unity // Author : Kimch // Created : 2020-05-31 // Description : // Last Modified By : Kimch // Last Modified On : // *********************************************************************** // // // *********************************************************************** namespace G { using System.Collections; using System.Collections.Generic; using DG.Tweening; using TMPro; using UnityEngine; using UnityEngine.UI; public class BubbleBoard : KUIWidget { [KUIFlag] private Image _imgBubble; [KUIFlag] #pragma warning disable CS0649 // 从未对字段“BubbleBoard._tmpText”赋值,字段将一直保持其默认值 null private TextMeshProUGUI _tmpText; #pragma warning restore CS0649 // 从未对字段“BubbleBoard._tmpText”赋值,字段将一直保持其默认值 null private RectTransform _rectTransform; private RectTransform _parentRect; private float _showDuration; private void Awake() { SetViewData(); _rectTransform = this.GetComponent(); _parentRect = this.transform.parent.GetComponent(); } public void Reset() { gameObject.SetActive(false); } public void SetContent(string text) { if (_tmpText != null) { _tmpText.gameObject.SetActive(true); _tmpText.text = text; } } public void SetDuration(float second) { _showDuration = second; } Transform _target; public void SetTarget(Transform target) { _target = target; } Vector3 _position = Vector3.zero; public void SetPosition(Vector3 worldposition, Vector2 offset = default) { _position = worldposition; } public void LateUpdate() { if (_showDuration > 0f) { _showDuration -= Time.unscaledDeltaTime; if (_showDuration <= 0f) { BoardManager.Instance.ReturnBoard(this); return; } } if (_target) { _position = _target.position; Vector3 screenPosition = RectTransformUtility.WorldToScreenPoint(Camera.main, _position); RectTransformUtility.ScreenPointToLocalPointInRectangle(_parentRect, screenPosition, KUIRoot.RootCamera, out Vector2 localPoint); _rectTransform.anchoredPosition = localPoint; } } public void DisableThis() { this.gameObject.SetActive(false); } public void Init() { this.gameObject.SetActive(true); _target = null; _tmpText.text = string.Empty; } } }