void OnRemoveBuff(object sender, EventArgs arg) { isDirty = true; RemoveBuffIconEvtArg e = arg as RemoveBuffIconEvtArg; if (buffIconMap.ContainsKey(e.buffID)) { GameObject imgObj = buffIconMap [e.buffID]; Image img = imgObj.GetComponent <Image> (); img.enabled = false; Destroy(imgObj); buffIconMap.Remove(e.buffID); } }
//移除buff public void RemoveBuff(int buffID, int count) { if (!buffMap.ContainsKey(buffID)) { //没有此buff,不用移除 return; } if (Global.BuffData.ContainsKey(buffID) == false) { return; } BuffItem buffItem = Global.BuffData [buffID] as BuffItem; if (buffItem.canBeRemoved == true) { //移除指定数量 if (buffMap.ContainsKey(buffID)) { for (int i = buffMap[buffID].Count - 1; i >= 0; i--) { BaseBuff buff = buffMap [buffID] [i]; buff.OnRemoveBuff(); buffMap [buffID].Remove(buff); } } } //判断是否为玩家单位 if (Global.GetPlayer() == gameObject) { if (!buffMap.ContainsKey(buffID) || buffMap[buffID].Count == 0) { RemoveBuffIconEvtArg arg = new RemoveBuffIconEvtArg(); arg.buffID = buffID; FireEvent(this, EventType.EVT_REMOVE_BUFF_ICON, arg); } } }