/// <summary> /// 游戏状态发生变化,主要用于检测怪物HP变化 /// </summary> /// <param name="iGameState"></param> /// <param name="fieldName"></param> private void IGameState_Changed(IGameState iGameState, string fieldName) { if (string.Equals(fieldName, GameState.GetFieldNameStatic <IGameState, MonsterHPUIStruct>(temp => temp.ShowMonsterHP))) { //处理异常状态 if (target.monsterObj != null && target.monsterObj == iGameState.ShowMonsterHP.monsterObj)//如果相同只需要查看buff就行了(暂时不处理buff) { target = iGameState.ShowMonsterHP; if (target.statusDatas != null) { foreach (var statusData in target.statusDatas) { if (statusData == null) { continue; } if (buffShowStructList.Count(temp => temp.statusData.EffectType == statusData.EffectType) > 0) { continue; } AddNewStatus(statusData); } } } else { target = iGameState.ShowMonsterHP; //重置 foreach (BuffShowStruct buffShowStruct in buffShowStructList) { GameObject.Destroy(buffShowStruct.buffTarget); } buffShowStructList.Clear(); //添加 if (target.statusDatas != null) { foreach (var statusData in target.statusDatas) { AddNewStatus(statusData); } } } //处理其他 NameText.text = target.monsterName; LifeImage.fillAmount = target.nowHP / target.maxHP; UIObj.SetActive(true); } }
private void Update() { if (target.monsterObj != null && iPlayerState != null && iPlayerState.PlayerObj != null) { if (target.nowHP <= 0 || Vector3.Distance(target.monsterObj.transform.position, iPlayerState.PlayerObj.transform.position) > 50) { //重置 foreach (BuffShowStruct buffShowStruct in buffShowStructList) { GameObject.Destroy(buffShowStruct.buffTarget); } buffShowStructList.Clear(); target = default(MonsterHPUIStruct); //隐藏 UIObj.SetActive(false); } } }