/// <summary> /// 创建头顶信息实例 /// </summary> /// <param name="objev"></param> /// <param name="entityID"></param> /// <param name="host"></param> /// <param name="ptr"></param> /// <param name="nLen"></param> /// <returns></returns> public UTopName CreateTopName(EntityView objev, IntPtr ptr, int nLen) { if (!bInit) { Trace.LogError("UTopNameManager必须初始化!"); return(null); } if (EntityView.isNullOrEmpty(objev)) { Trace.LogWarning("TopName--实体视图无效!"); return(null); } int entityID = objev.ID; //如果表里面已含,则更新信息并返回 if (m_TopNameMap.ContainsKey(entityID)) { Trace.LogWarning(entityID + "已经有TopName,返回已有的实例"); UTopName ut = m_TopNameMap[entityID]; //接受逻辑层信息并更新 SetNameInfo(ptr, nLen, ut); return(ut); } //分配一个节点 TopNameNode bcn = new TopNameNode(); UTopName utn = GetTopName(ref bcn); if (null == utn) { return(null); } utn.CreatBillBoard(); utn.ChangeCanvasNode(bcn); utn.Init(objev); m_TopNameMap.Add(entityID, utn); SetNameInfo(ptr, nLen, utn); if (objev.Property) { int nMatchType = objev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MATCHTYPE); int nRankScore = objev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_RANKSCORE); int nRankGrade = objev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_RANKGRADE); int nRankIcon = GameLogicAPI.getRankIconIDByGrade(nMatchType, nRankGrade); if (nRankIcon > 0) { utn.SetRankLv(nRankIcon); } int nSex = objev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_SEX); utn.SetSex(nSex); } return(utn); }
//预加载 public void PreWarmTopName() { if (bPreWarmTopName) { return; } bPreWarmTopName = true; for (int i = 0; i < TopNameCacheCount; i++) { TopNameNode canvNode = new TopNameNode(); if (!AllocTopNamePos(ref canvNode)) { continue; } UTopName utn = InstanceUTopName(canvNode); utn.CreatBillBoard(); utn.ChangeParent(CacheTopNameRoot.transform); utn.Init(null); utn.ChangeParent(CacheTopNameRoot.transform); utn.SetEnable(false); utn.ChangeCanvasNode(canvNode); m_CacheTopName.Enqueue(utn); } }