public void Update(uint elapsed) { if (nodes.Count <= 0) { return; } for (int i = 0; i < nodes.Count; ++i) { nodes[i].time -= elapsed; if (nodes[i].time <= 0) { exList.Add(nodes[i]); } } for (int i = 0; i < exList.Count; ++i) { BattleUnit unit = exList[i].mOwner; if (unit != null && !unit.IsDestory()) { SkillDetails.AddMaterialBehaviour(unit, unit.GetHitMaterialEffectCdContainer(), exList[i].name, exList[i].impactDamageType, exList[i].dir); } nodes.Remove(exList[i]); } exList.Clear(); }
/// <summary> /// 添加材质特效和声音. /// </summary> public ErrorCode AddMaterialBehaviour(MaterialBehaviourDef name, ImpactDamageType impactDamageType, float dir) { // 无效的伤害类型. if (impactDamageType >= ImpactDamageType.Count) { return(ErrorCode.Succeeded); } if (name != MaterialBehaviourDef.OnMaterialDie && IsDead()) { return(ErrorCode.TargetIsDead); } if (name == MaterialBehaviourDef.OnMaterialDie) { uint materialID = GetMaterialResourceID(); if (materialID == uint.MaxValue) { ErrorHandler.Parse(ErrorCode.ConfigError, dbgGetIdentifier() + " 没有材质!"); return(ErrorCode.ConfigError); } MaterialTableItem material = DataManager.MaterialTable[materialID] as MaterialTableItem; if (material == null) { SkillUtilities.ResourceNotFound("material", materialID); return(ErrorCode.ConfigError); } if (material.deathEffectWaitTime > 0) { Scene.GetDelayBehaviourManager().AddDelayBehaviour(this, name, impactDamageType, dir, material.deathEffectWaitTime); return(ErrorCode.Succeeded); } } return(SkillDetails.AddMaterialBehaviour(this, mHitMaterialEffectCdContainer, name, impactDamageType, dir)); }