Ejemplo n.º 1
0
    /// <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);
        }
    }
Ejemplo n.º 2
0
 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);
         }
     }
 }