private void ResetData() { m_MaxValue = 100; m_CurValue = 100; m_TempValue = 0; m_MpValue = 100; m_MpMaxValue = 100; m_CamType = 0; m_Level = 0; m_RoleName = ""; m_StyleInfo = null; m_Entity = null; m_Sequence = null; m_BloodType = BloodStyleType.Player; m_bDead = false; m_bVisible = true; m_bEnable = true; m_IsOutOfVisibleDistance = false; m_IsClosed = false; m_FinalVisible = true; if (null != m_BloodImg) { m_BloodImg.fillAmount = 1; } if (null != m_BloodTempImg) { m_BloodTempImg.fillAmount = 0; } if (null != m_BloodShieldImg) { m_BloodShieldImg.fillAmount = 0; } if (null != m_MpImg) { m_MpImg.fillAmount = 1; } if (null != m_RoleNameTex) { m_RoleNameTex.text = ""; } if (null != m_LevelTex) { m_LevelTex.text = ""; } if (null != m_BloodNumTex) { m_BloodNumTex.text = ""; } foreach (UBlood_DebuffProgressBar bar in DebuffList) { bar.Clear(); } }
public void Init(U3D_Render.EntityView ev, int cam, BloodStyleType bt, BloodCanvasNode node) { ResetData(); m_Entity = ev; if (!U3D_Render.EntityView.isNullOrEmpty(ev)) { m_ID = m_Entity.ID; } m_BloodType = bt; m_CanvasNode = node; m_StyleInfo = UBloodManager.Instance.m_BloodStyleList.Find((x) => { return(x.bloodType == m_BloodType); }); if (null == m_StyleInfo || null == m_BloodImg) { return; } bInit = true; m_BloodInfoVisible = UBloodManager.Instance.NumInfoVisible; if (null != m_BloodNumTex) { m_BloodNumTex.text = ""; m_BloodNumTex.gameObject.SetActive(m_BloodInfoVisible); } if (m_BillBoard) { m_BillBoard.gameObject.SetActive(m_FinalVisible); } if (m_BloodType == BloodStyleType.Boss) { this.gameObject.SetActive(m_bVisible); } if (m_Sequence == null) { m_Sequence = DOTween.Sequence(); } SetCampType(cam); if (m_Entity != null) { CreatBillBoard(); ChangeCanvasNode(); } }
/// <summary> /// 实例化大血条 /// </summary> /// <returns></returns> private UBlood InstanceUBossBlood() { BloodStyleInfo bloodInfo = m_BloodStyleList.Find((x) => { return(x.bloodType == BloodStyleType.Boss); }); if (null != bloodInfo && null != bloodInfo.bloodRes && null != bossBloodParent) { GameObject go = bloodInfo.bloodRes.InstanceMainRes(); RectTransform rt = go.transform.GetComponent <RectTransform>(); rt.SetParent(bossBloodParent, false); UBlood blood = go.GetComponent <UBlood>(); blood.resNode = bloodInfo.bloodRes; return(blood); } return(null); }
/// <summary> /// 实例化普通血条 /// </summary> /// <param name="entityType">实体类型</param> /// <param name="isHero">是否主角</param> /// <param name="bcn">血条节点数据</param> /// <returns></returns> private UBlood InstanceUBlood(BloodStyleType type, BloodCanvasNode bcn) { //大血条返回null,这个方法只创常规血条 if (type == BloodStyleType.Boss) { return(null); } BloodStyleInfo bloodInfo = m_BloodStyleList.Find((x) => { return(x.bloodType == type); }); if (null != bloodInfo && null != bloodInfo.bloodRes) { GameObject go = bloodInfo.bloodRes.InstanceMainRes(); if (RectPosition(go, bcn)) { UBlood blood = go.GetComponent <UBlood>(); blood.resNode = bloodInfo.bloodRes; return(blood); } } return(null); }
private Vector2[] m_curIndexArry = new Vector2[3]; //暂时只显示三种类型,Player、Buliding、Monster,大血条不用建格子 /// <summary> /// 分配血条格子,同一类型放一起,左下为起点, 如:最下面3行放人物的,再依次往上4行放建筑的,最上面放怪物 /// </summary> /// <param name="type"></param> /// <param name="bcn"></param> /// <returns></returns> private bool AllocBloodPos(BloodStyleType type, ref BloodCanvasNode bcn) { int nTypeIndex = (int)type; BloodStyleInfo bloodInfo = m_BloodStyleList.Find((x) => { return(x.bloodType == type); }); if (null != bloodInfo) { Vector2 bloodSize = bloodInfo.bloodSize; bcn.isValid = false; //先查缓存格子列有没有 if (m_unUseCanvasNodeMap.ContainsKey(type) && m_unUseCanvasNodeMap[type].Count > 0) { BloodCanvasNode bc = m_unUseCanvasNodeMap[type].Dequeue(); bcn.RowIndex = bc.RowIndex; bcn.ColIndex = bc.ColIndex; bcn.start = bc.start; bcn.end = bc.end; bcn.vSize = bc.vSize; bcn.scale = bc.scale; bcn.isValid = true; } else { if (m_curIndexArry[nTypeIndex].x > MaxCellRowCountList[nTypeIndex]) { bcn.isValid = false; return(false); } bcn = new BloodCanvasNode(); bcn.start.x = bloodInfo.bloodSize.x * m_curIndexArry[nTypeIndex].y; float offset = 0; if (nTypeIndex > 0) { for (int i = 0; i < nTypeIndex; i++) { BloodStyleInfo info = m_BloodStyleList.Find((x) => { return(x.bloodType == (BloodStyleType)i); }); if (info != null) { offset += MaxCellRowCountList[i] * info.bloodSize.y; } } } bcn.start.y = offset + bloodInfo.bloodSize.y * m_curIndexArry[nTypeIndex].x; bcn.end.x = bcn.start.x + bloodSize.x; bcn.end.y = bcn.start.y + bloodSize.y; bcn.vSize = bloodSize; bcn.scale = bloodInfo.bloodScale; bcn.RowIndex = (int)m_curIndexArry[nTypeIndex].x; bcn.ColIndex = (int)m_curIndexArry[nTypeIndex].y; //分配下一次的格子索引 m_curIndexArry[nTypeIndex].y++; if (m_curIndexArry[nTypeIndex].y == (int)(bloodRenderTextureWidth / bloodInfo.bloodSize.x)) { m_curIndexArry[nTypeIndex].x++; m_curIndexArry[nTypeIndex].y = 0; } bcn.isValid = true; } return(true); } bcn.isValid = false; return(false); }