//禁用飘字节点 public void DisableFloatFontItem(UWarFloatFontItem fontItem) { ActiviteList.Remove(fontItem); UnActiviteList.AddLast(fontItem); fontItem.SetEnable(false); fontItem.Clear(); }
//实例化新飘字节点 private UWarFloatFontItem CreateNewFont() { if (null == floatFontItemRes) { return(null); } GameObject go = floatFontItemRes.InstanceMainRes(); if (null == go) { return(null); } UWarFloatFontItem uFontItem = go.GetComponent <UWarFloatFontItem>(); if (null == uFontItem) { return(null); } else { uFontItem.SetFloatFontView(this); if (m_Anim != null) { uFontItem.SetAnimManager(m_Anim); } return(uFontItem); } }
//如果非活动列表里飘字太多,则删一部分,保持在20个 public override void Update() { if (UnActiviteList.Count > 20) { int count = UnActiviteList.Count - 20; for (int i = 0; i < count; i++) { UWarFloatFontItem temp = UnActiviteList.First.Value; UnActiviteList.RemoveFirst(); temp.Clear(); var temp1 = temp.gameObject; ResNode.DestroyRes(ref temp1); } } }
//重置位置,将新实例化出的节点放在飘字窗口下 private void RectPosition(UWarFloatFontItem fontItem) { fontItem.GetRectTransform.SetParent(m_Container, false); fontItem.GetRectTransform.localScale = Vector3.one; fontItem.GetRectTransform.anchoredPosition = Vector3.zero; }
//激活飘字节点 private void EnableFloatFontItem(UWarFloatFontItem fontItem) { ActiviteList.AddLast(fontItem); UnActiviteList.Remove(fontItem); }
/// <summary> /// 创建飘字 /// </summary>piaozi /// <param name="entry">实体</param> /// <param name="text">飘字内容</param> /// <param name="type">飘字类型</param> /// <returns></returns> public UWarFloatFontItem CreateFloatFont(GameObject entry, String text, WarFloatFontType type) { UWarFloatFontItem tempItem = null; //判断是否需要创建 if (!NeedToCreate(entry)) { return(null); } if (type == WarFloatFontType.Invalid) { return(null); } //先从非活动列表取 if (UnActiviteList.Count > 0) { tempItem = UnActiviteList.First.Value; UnActiviteList.RemoveFirst(); tempItem.ChangeHostEntity(entry); if (!tempItem.ChangeType(type)) { tempItem.SetEnable(false); tempItem.Clear(); UnActiviteList.AddLast(tempItem); return(null); } tempItem.SetText(text); if (tempItem.UpdatePos()) { tempItem.ActivateFont(); ActiviteList.AddLast(tempItem); } else { tempItem.SetEnable(false); tempItem.Clear(); UnActiviteList.AddLast(tempItem); return(null); } } //否则实例化新节点 else { tempItem = CreateNewFont(); if (null == tempItem) { return(null); } RectPosition(tempItem); tempItem.ChangeHostEntity(entry); if (!tempItem.ChangeType(type)) { tempItem.SetEnable(false); tempItem.Clear(); UnActiviteList.AddLast(tempItem); return(null); } tempItem.SetText(text); if (tempItem.UpdatePos()) { tempItem.ActivateFont(); ActiviteList.AddLast(tempItem); } else { tempItem.SetEnable(false); tempItem.Clear(); UnActiviteList.AddLast(tempItem); } } return(tempItem); }