예제 #1
0
 /// <summary>
 /// 注册一个技能控制器的特效
 /// </summary>
 /// <param name="skill">技能控制器</param>
 public void RegisterSkillEffect(BaseSkill skill)
 {
     if (skill.SkillEffects.Count > 0 && !_SkillEffect.ContainsKey(skill.GetSkillIDAndLevel()))
     {
         Transform obj = null;
         for (int i = 0; i < skill.SkillEffects.Count; i++)
         {
             if (UnityStaticTool.CreateObjectTo <Transform>(skill.SkillEffects[i], this.transform, Vector3.zero, out obj))
             {
                 obj.gameObject.SetActive(false);
                 if (_SkillEffect.ContainsKey(skill.GetSkillIDAndLevel()))
                 {
                     _SkillEffect[skill.GetSkillIDAndLevel()].Add(obj.gameObject);
                 }
                 else
                 {
                     _SkillEffect.Add(skill.GetSkillIDAndLevel(), new List <GameObject>()
                     {
                         obj.gameObject
                     });
                 }
             }
         }
     }
     else
     {
         BattleController.Instance.DebugLog(LogType.ERROR, "Skill effect register failed! No effect found or effect is exist!");
     }
 }
예제 #2
0
 /// <summary>
 /// 初始化UI控制器
 /// </summary>
 public override void Init()
 {
     _HeroUI = new Dictionary <HeroMono, BattleHeroUI>();
     //清空玩家和敌人列表
     UnityStaticTool.DestoryChilds(PlayerHeroParent.gameObject, true);
     UnityStaticTool.DestoryChilds(EnemyHeroParent.gameObject, true);
 }
예제 #3
0
 /// <summary>
 /// 关闭输入UI
 /// </summary>
 public void DisappearInputUI()
 {
     UnityStaticTool.DestoryChilds(FirstMenuGrid.gameObject, true);
     UnityStaticTool.DestoryChilds(SecondMenuGrid.gameObject, true);
     UnityStaticTool.DestoryChilds(ThirdMenuGrid.gameObject, true);
     TextTip.text = "";
 }
예제 #4
0
 /// <summary>
 /// 点击了技能菜单
 /// </summary>
 void OnSkillButtonClick()
 {
     //首先关闭二级菜单和三级菜单
     UnityStaticTool.DestoryChilds(SecondMenuGrid.gameObject, true);
     UnityStaticTool.DestoryChilds(ThirdMenuGrid.gameObject, true);
     //然后创建新的二级菜单
     foreach (BaseSkill skill in _CurHero.Skills.Values)
     {
         if (skill.IsPassiveSkill)
         {
             continue;
         }
         Button button = null;
         if (UnityStaticTool.CreateObjectReletiveTo <Button>(ButtonPrefab, SecondMenuGrid.transform, out button))
         {
             button.name = skill.Name;
             button.GetComponentInChildren <Text>().text = skill.Name;
             if (!skill.CanUseSkill())
             {
                 button.interactable = false;
                 continue;
             }
             button.onClick.AddListener(delegate { this.OnSkillChooseClick(button.gameObject); });
         }
     }
 }
예제 #5
0
 /// <summary>
 /// 退出系统的时候调用
 /// </summary>
 public override void Clear()
 {
     //清除玩家队列
     UnityStaticTool.DestoryChilds(PlayerTeam.gameObject, true);
     //清除敌人队列
     UnityStaticTool.DestoryChilds(EnemyTeam.gameObject, true);
     //清除玩家UI
     UnityStaticTool.DestoryChilds(PlayerHeroParent.gameObject, true);
     //清除敌人UI
     UnityStaticTool.DestoryChilds(EnemyHeroParent.gameObject, true);
     //清除关联字典
     _HeroUI.Clear();
 }
예제 #6
0
        /// <summary>
        /// 注册敌人英雄UI信息
        /// </summary>
        /// <param name="hero">注册的英雄对象</param>
        public override void RegisterEnemyHero(HeroMono hero)
        {
            BattleHeroUI hero_UI = null;

            if (UnityStaticTool.CreateObjectReletiveTo <BattleHeroUI>(BattleHeroUIPrefab, EnemyHeroParent, out hero_UI))
            {
                BattleController.Instance.DebugLog(LogType.INFO, "Register enemy hero in UI successfully!");
                hero_UI.Init(hero);
                _HeroUI.Add(hero, hero_UI);
            }
            else
            {
                BattleController.Instance.DebugLog(LogType.INFO, "Failed to register enemy hero!");
            }
        }
예제 #7
0
        /// <summary>
        /// 显示一个输入UI
        /// </summary>
        /// <param name="hero">传入当前回合的英雄</param>
        public void ShowInputUI(HeroMono hero)
        {
            //保存这个英雄的信息
            _CurHero = hero;
            FirstMenu.Clear();
            //设置tips
            TextTip.text = "当前英雄回合:" + hero.Name;
            Button button = null;

            if (UnityStaticTool.CreateObjectReletiveTo <Button>(ButtonPrefab, FirstMenuGrid.transform, out button))
            {
                button.GetComponentInChildren <Text>().text = "技能";
                button.onClick.AddListener(OnSkillButtonClick);
            }
        }
예제 #8
0
 /// <summary>
 /// 创建UI上的所有参与战斗的英雄Mono对象并向BattleController注册这个对象
 /// </summary>
 /// <param name="player">玩家队伍数据</param>
 /// <param name="enemy">敌人队伍数据</param>
 public override void CreateHeros(List <Hero> player, List <Hero> enemy)
 {
     //清除玩家和敌人队列的所有数据
     UnityStaticTool.DestoryChilds(PlayerTeam.gameObject, true);
     UnityStaticTool.DestoryChilds(EnemyTeam.gameObject, true);
     //创建玩家的英雄对象
     for (int i = 0; i < player.Count; i++)
     {
         HeroMono   hero_temp = null;
         GameObject prefab    = Resources.Load <GameObject>("Hero/" + player[i].ID);
         if (UnityStaticTool.CreateObjectReletiveTo <HeroMono>((prefab == null ? HeroPrefab : prefab), PlayerTeam, out hero_temp))
         {
             hero_temp.Init(player[i], true);
             hero_temp.transform.position = PlayerTeamPos[i].position;
             //记录英雄坐标
             hero_temp.HeroPosition = PlayerTeamPos[i].position;
             //记录这个英雄的对象引用
             BattleController.Instance.RegisterPlayerHeroMono(hero_temp);
         }
     }
     //创建传入进来的敌人对象
     for (int i = 0; i < enemy.Count; i++)
     {
         HeroMono   enemy_temp = null;
         GameObject prefab     = Resources.Load <GameObject>("Hero/" + player[i].ID);
         if (UnityStaticTool.CreateObjectReletiveTo <HeroMono>((prefab == null ? HeroPrefab : prefab), EnemyTeam, out enemy_temp))
         {
             enemy_temp.Init(enemy[i], false);
             enemy_temp.transform.position = EnemyTeamPos[i].position;
             //记录英雄的坐标
             enemy_temp.HeroPosition = EnemyTeamPos[i].position;
             //记录这个敌人英雄的对象引用
             BattleController.Instance.RegisterEnemyHeroMono(enemy_temp);
         }
     }
 }