using UnityEngine; using UnityEngine.UI; using System.Collections; using Games.ChatHistory; using GCGame; using GCGame.Table; using System; using Games.GlobeDefine; public class ChatBubbleLogic : UIControllerBase { public ChatInfoLogItem _ChatLogItem; public LayoutElement m_Layout; private ChatHistoryItem m_CurrShowChatHistory = null; private float m_HideTime = 0; public void Show(ChatHistoryItem history) { if (gameObject.activeSelf) { ClearBubble(); } if (!gameObject.activeSelf) { gameObject.SetActive(true); } if(!gameObject.activeInHierarchy) { m_HideTime = Time.realtimeSinceStartup + (history.Duration > 0 ? history.Duration : 5); m_CurrShowChatHistory = history; return; } m_CurrShowChatHistory = null; m_HideTime = 0; if (_ChatLogItem.SetChatLog(history)==false) { ClearBubble(); gameObject.SetActive(false); return; } //string dialogStr = _ChatLogItem._ChatInfo.text; //int strLen = System.Text.Encoding.Default.GetBytes(dialogStr).Length; //if (strLen % 2 != 0) // strLen += 1; //if(m_Layout != null) //{ //m_Layout.preferredWidth = strLen * _ChatLogItem._ChatInfo.fontSize / 2 + _ChatLogItem._ChatInfo.fontSize; //if (m_Layout.preferredWidth > 460) // m_Layout.preferredWidth = 460; //} m_HideTime = Time.realtimeSinceStartup + (history.Duration > 0 ? history.Duration : 5); m_CurrShowChatHistory = history; } void OnEnable() { if(m_HideTime>Time.realtimeSinceStartup && m_CurrShowChatHistory!=null) { Show(m_CurrShowChatHistory); } } //修改像宠物冒泡等在显示时间没到时被隐藏里面又出现的情况 导致显示不正确的问题 void Update() { if (m_CurrShowChatHistory == null || m_HideTime <= 0) return; if (Time.realtimeSinceStartup - m_HideTime >= 0) { m_CurrShowChatHistory = null; m_HideTime = 0; ClearBubble(); gameObject.SetActive(false); } } void ClearBubble() { _ChatLogItem.ClearChat(); } }