//预热血条 public void PreWarmBlood() { if (bPreWarmBlood) { return; } bPreWarmBlood = true; for (int i = 0; i < (int)BloodStyleType.Boss; i++) { BloodStyleType eType = (BloodStyleType)i; if (!m_CacheBloodMap.ContainsKey(eType)) { m_CacheBloodMap.Add(eType, new Queue <UBlood>()); } Queue <UBlood> BloodList = m_CacheBloodMap[eType]; BloodList.Clear(); for (int n = 0; n < CacheCountArry[i]; n++) { BloodCanvasNode canvNode = new BloodCanvasNode(); if (!AllocBloodPos(eType, ref canvNode)) { continue; } UBlood ub = InstanceUBlood(eType, canvNode); if (null != ub) { ub.Init(null, 0, eType, canvNode); ub.ChangeParent(CacheBloodRoot.transform); ub.SetEnable(false); BloodList.Enqueue(ub); } } } if (EntityFactory.MainHero != null) { bossBloodTarget = EntityFactory.MainHero.transform; } }
/// <summary> /// 血条创建 /// </summary> /// <param name="objev">实体View</param> /// <param name="entityID">实体ID</param> /// <param name="host">实体Object</param> /// <param name="camType">阵营</param> /// <returns></returns> public UBlood CreatBlood(EntityView objev, int campType) { if (!bInit) { Trace.LogError("UBloodManager必须初始化!"); return(null); } if (null == objev || !objev.IsValid || null == objev.Property) { Trace.LogWarning("Blood--EntityView无效!"); return(null); } CreateBossBlood(); int entityID = objev.ID; if (m_BloodMap.ContainsKey(entityID)) { Trace.LogWarning(entityID + "已经有血条,返回已有的实例"); UBlood ub = m_BloodMap[entityID]; return(ub); } //按照策划要求,目前不创建己方小兵血条,其他己方物体不变 //if (objev.Flag == (int)MONSTER_SUB_TYPE.MONSTER_SUB_TYPE_SOLDIER && campType == (int)GFxCampTpye.CT_Friend && objev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MASTER_UID) <= 0) //{ // return null; //} int hideFlag = (int)ENTITY_MASKFLAG.MASKFLAG_PROPCHANGE_HIDE_SAME_CAMP; if (campType == (int)GFxCampTpye.CT_Friend && (objev.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_MASK) & hideFlag) == hideFlag) { return(null); } BloodStyleType bloodType = BloodStyleType.Player; if (objev.Type == ENTITY_TYPE.TYPE_PLAYER_ROLE) { bloodType = BloodStyleType.Player; } else if (objev.Type == ENTITY_TYPE.TYPE_MONSTER && objev.createinfo.nBloodStyle < (int)BloodStyleType.Boss) { bloodType = (BloodStyleType)objev.createinfo.nBloodStyle; } BloodCanvasNode bcn = new BloodCanvasNode(); UBlood blood = GetBlood(bloodType, ref bcn); if (null == blood) { return(null); } blood.Init(objev, campType, bloodType, bcn); m_BloodMap.Add(entityID, blood); ChangeMask(objev, true); SetProperty(objev, blood); return(blood); }