public void PopHp(int tag, Transform trans, int hpType, int hp) { BubbleInfo info = new BubbleInfo(hp.ToString(), 0f, textColor[hpType]); InfoQueue iqueue = PushBubbleInfo(tag, 2, info); iqueue.Follow(trans); }
void SetupWriter(BubbleInfo info) { m_CurrentCharacters = info.Text.ToCharArray(); m_CurrentText = info.Text; m_AlternateDelay = 0.0f; m_WriteTimer = 0.0f; m_TextCharacterIndex = 0; m_FadeValues.Clear(); m_IsTextInstant = m_TypesToInstantWrite.Contains(info.Type); m_IsTextFading = info.Type == Type.Think; m_WritingText = !m_IsTextInstant && m_CurrentText.Length > 0; if (m_IsTextInstant) { m_AlternateDelay = k_MinWaitTimePerCharacter * m_CurrentCharacters.Length; m_CurrentSpeechBubble.Text.text = m_CurrentText; } else { // Add rich text alpha tag for text to start invisible. m_CurrentSpeechBubble.Text.text = k_TextAlpha + m_CurrentText; } }
public void Push(BubbleInfo info) { if (!item.isEmpty && !item.isPush) { return; } queue.Enqueue(info); }
public IEnumerator Load(string fileName) { RemoveChatBubble(); //yield return new WaitForEndOfFrame(); ObjectWrapper ow = new ObjectWrapper(); yield return(ResourceLoader.Instance.StartCoroutine(ObjCachePoolMgr.Instance.LoadPrefab(fileName, ObjCachePoolType.UI_PREFAB, fileName, ow))); GameObject bubbleGO = ow.obj as GameObject; if (bubbleGO == null) { //Debug.Log("UIChatBubbleWidget bubbleGO null "); yield break; } RectTransform rect = bubbleGO.GetComponent <RectTransform>(); if (rect == null) { //Debug.Log("UIChatBubbleWidget bubbleGO rect "); yield break; } GameObject.DontDestroyOnLoad(bubbleGO); if (this == null || gameObject == null || transform == null || fileName != mShowingFileName) { //Debug.Log("UIChatBubbleWidget bubbleGO return "); ObjCachePoolMgr.Instance.RecyclePrefab(bubbleGO, ObjCachePoolType.UI_PREFAB, fileName); yield break; } RemoveChatBubble(); rect.SetParent(transform); rect.SetAsFirstSibling(); //美术资源制作要复合规格 rect.localScale = Vector3.one; rect.anchoredPosition3D = Vector3.zero; rect.sizeDelta = Vector2.zero; LayoutElement layout = bubbleGO.GetComponent <LayoutElement>(); if (layout == null) { layout = bubbleGO.AddComponent <LayoutElement>(); } layout.ignoreLayout = true; mShowingInfo = new BubbleInfo(fileName, bubbleGO); //mDefaultImage.enabled = false; SetDefaultImageEnabled(false); UpdateFlip(); StopLoadCoroutine(); }
/// <summary> /// /// </summary> /// <param name="tag">用于建立队列索引,弹出的内容会顶同一个索引队列,只有一个队列,填0</param> /// <param name="kindIdx">弹出类型</param> /// <param name="txt"></param> /// <param name="duration"></param> public void Bubble(int tag, int kindIdx, string txt, float duration) { if (kindIdx < 0 || kindIdx >= kindItems.Count) { return; } BubbleInfo info = new BubbleInfo(txt, duration); PushBubbleInfo(tag, kindIdx, info); }
public void AddBubble(string str, Vector3 pos, Bubble.BubbleType type, bool bSelf) { BubbleInfo info = new BubbleInfo(); info.str = str; info.pos = pos; info.type = type; info.bSelf = bSelf; lstBubbleInfo.Add(info); }
public void Bubble(int tag, int kindIdx, Transform trans, string txt, float duration) { if (kindIdx < 0 || kindIdx >= kindItems.Count) { return; } BubbleInfo info = new BubbleInfo(txt, duration); InfoQueue iqueue = PushBubbleInfo(tag, kindIdx, info); iqueue.Follow(trans); }
public void RemoveChatBubble() { SetDefaultImageEnabled(true); if (mShowingInfo == null) { return; } ObjCachePoolMgr.Instance.RecyclePrefab(mShowingInfo.mBubbleObject, ObjCachePoolType.UI_PREFAB, mShowingInfo.mFileName); mShowingInfo = null; //Debug.Log("UIChatBubbleWidget RemoveChatBubble "); }
void UpdateLoadBubble() { if (lstBubbleInfo.Count > 0) { BubbleInfo info = lstBubbleInfo[0]; lstBubbleInfo.RemoveAt(0); Bubble bubble = Load(info.str, info.pos, info.type, info.bSelf); if (bubble) { bubble.OwnerID = bubble.GetInstanceID(); AddBubble(bubble); } } }
private InfoQueue PushBubbleInfo(int tag, int kindIdx, BubbleInfo info) { long key = GetKey(tag, kindIdx); InfoQueue infoQue = null; if (waitings.ContainsKey(key)) { infoQue = waitings[key]; } else { infoQue = new InfoQueue(); infoQue.ItemGo = kindItems[kindIdx].CachedGo; waitings.Add(key, infoQue); } infoQue.Push(info); return(infoQue); }
public bool CheckPop(float curTime) { if (queue.Count > 0) { if (nextTime <= curTime) { nextTime = curTime + item.period; BubbleInfo info = queue.Dequeue(); info.Bubble(item); } return(false); } else { //if(delTime<curTime) if (item.isEmpty) { ReleaseItem(); return(true); } return(false); } }