// Update is called once per frame void Update() { if (Application.isEditor) { //UpdateTest(); } //lz-2016.11.03 有数据的情况下保证每一帧都有显示有效数据 m_CurFrameHasShow = false; while (!m_CurFrameHasShow && null != m_HPEventData) //lz-2016.11.07 有可能会变空 { HPChangeEventData data = m_HPEventData.Pop(); //lz-2016.11.03 因为这里是用栈处理的,只显示最新的,如果堆积超时的就不要了 if (null == data || Time.realtimeSinceStartup - data.m_AddTime >= m_DataOutTime) { m_CurFrameHasShow = true; } else { if (null != data.m_Transfrom && null != data.m_Self) { Pathea.PeEntity entity = data.m_Self.GetComponent <Pathea.PeEntity>(); //lz-2016.11.03 entity没有死,并且Transfrom还存在的时候才显示HPChange效果 if (null != entity && !entity.IsDeath()) { if (ShowHPChange(data.m_HPChange, data.m_Transfrom.position, data.m_Proto)) { m_CurFrameHasShow = true; } } } } } }
public void OnHpChange(SkEntity self, SkEntity caster, float hpChange) { if (null == self) { return; } SkAliveEntity skAlive = self as SkAliveEntity; if (null != skAlive) { PeTrans trans = skAlive.Entity.peTrans; CommonCmpt common = skAlive.Entity.commonCmpt; if (null != trans) { HPChangeEventData data = new HPChangeEventData(); data.m_Self = self; data.m_HPChange = hpChange; data.m_Transfrom = trans.trans; data.m_Proto = (null != common && null != common.entityProto)?common.entityProto.proto:EEntityProto.Doodad; data.m_AddTime = Time.realtimeSinceStartup; _datas.Push(data); } } }