游戏中的技能升级:

1:解析技能
using UnityEngine;
using System.Collections;
/// <summary>
/// 拆分技能信息
/// </summary>
public class SkillManager : MonoBehaviour
{
        public static SkillManager _instance;
        public TextAsset skillinfoText;
        private ArrayList skillList = new ArrayList ();
        void Awake ()
       {
              _instance = this ;
              InitSkill();
       }
        void InitSkill()
       {
               string [] skillArray = skillinfoText.ToString().Split( '\n' );
               foreach ( string str in skillArray)
              {
                      string [] proArray = str.Split( ',' );
                      Skill skill = new Skill ();
                     skill.Id = int .Parse(proArray[0]);
                     skill.Name = proArray[1];
                     skill.Icon = proArray[2];
                      switch (proArray[3])
                     {
                            case "Warrior" :
                                  skill.PlayerType = PlayerType .Warrior;
                                   break ;
                            case "FemaleAssassin" :
                                  skill.PlayerType = PlayerType .FemaleAssassin;
                                   break ;
                     }
                      switch (proArray[4])
                     {
                            case "Basic" :
                                  skill.SkillType = SkillType .Basic;
                                   break ;
                            case "Skill" :
                                  skill.SkillType = SkillType .Skill;
                                   break ;
                     }
                      switch (proArray[5])
                     {
                            case "Basic" :
                                  skill.PosType = PosType .Basic;
                                   break ;
                            case "One" :
                                  skill.PosType = PosType .One;
                                   break ;
                            case "Two" :
                                  skill.PosType = PosType .Two;
                                   break ;
                            case "Three" :
                                  skill.PosType = PosType .Three;
                                   break ;
                     }
                     skill.ColdTime = int .Parse(proArray[6]);
                     skill.Damage = int .Parse(proArray[7]);
                     skill.Level = 1;
                     skillList.Add(skill);
              }
       }
        //传进一个位置信息
        public Skill GetSkillByPosition( PosType posType)
       {
               PlayerInfo info = PlayerInfo ._instance;
               foreach ( Skill skill in skillList)
              { //人物等于人物    位置等于位置
                      if (skill.PlayerType == info.PlayerType && skill.PosType == posType)
                     { //返回skiil(所有属性类)
                            return skill;
                     }
              }
               return null ;
       }
}

2更新技能图片的显示:   每个技能上都挂同一个脚本  点击技能按钮时发送消息    transform.parent.SendMessage( "OnSkillClick" , skill);
                                                                               
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SkillItemUI : MonoBehaviour {
        public PosType postype;
        private Skill skill;
        private UISprite sprite;
        private UISprite Sprite
       {
               get
              {
                      if (sprite== null )
                     {
                           sprite = this .GetComponent< UISprite >();
                     }
                      return sprite;
              }
       }
        private void Start ()
       {
              UpdateShow();
       }
        /// <summary>
        /// 更新技能图片
        /// </summary>
        void UpdateShow () {
               //                传技能类型 0,1,2,3
              skill = SkillManager ._instance.GetSkillByPosition(postype);
              Sprite.spriteName = skill.Icon; //
       }
        void OnClick()
       {
              
               //给父物体脚本发送事件(“方法”,参数)
                     transform.parent.SendMessage( "OnSkillClick" , skill);
              
       }
}

3技能面板脚本  按钮关闭 激活  根据技能 (第3条) 送的消息  根据人物金钱,技能与人物等级差,判断技能是否升级
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class skillUI : MonoBehaviour {
        UILabel skillNameLabel;
        UILabel jieshao;
        UILabel upgredButtonLabel;
        UIButton upgredButton;
        UIButton coloseButton;
        private Skill skill; //当前选择的技能按钮
        void Start () {
              
              skillNameLabel = this .transform.Find( "title_name" ).GetComponent< UILabel >();
              upgredButton = this .transform.Find( "BTN" ).GetComponent< UIButton >();
              coloseButton = this .transform.Find( "Collse" ).GetComponent< UIButton >();
              upgredButtonLabel= this .transform.Find( "BTN/Label" ).GetComponent< UILabel >();
              jieshao= this .transform.Find( "jiaoshao" ).GetComponent< UILabel >();
              
              skillNameLabel.text = null ;
              DisableUpgradeButton( "选择技能" );
               EventDelegate ed = new EventDelegate ( this , "OnUpgrade" );
               //给按钮添加点击事件
              upgredButton.onClick.Add(ed);
       }
       
       
        void DisableUpgradeButton( string labele= "" )
       { //按钮设置为关闭
              upgredButton.SetState( UIButton . State .Disabled, true );
               //不激活
              upgredButton.GetComponent< Collider >().enabled = false ;
               if (labele!= "" )
              {
                     upgredButtonLabel.text = labele;
              }
       }
        private void OnEnableUpgradeButton( string label= "" )
       { //按钮设置为正常
              upgredButton.SetState( UIButton . State .Normal, true );
               //激活
              upgredButton.GetComponent< Collider >().enabled = true ;
               if (label!= "" )
              {
                     upgredButtonLabel.text = label;
              }
       }
        //技能上传的事件
        void OnSkillClick( Skill skill)
       {
               this .skill = skill;
               PlayerInfo info = PlayerInfo ._instance;
               if ((500 * (skill.Level + 1)<info.Coin))
              {
                      if (skill.Level>=info.Level)
                     {
                           DisableUpgradeButton( "技能不能人物等级" );
                     }
                      else
                     {
                           OnEnableUpgradeButton( "升级" );
                     }
                     
              } else
              {
                     DisableUpgradeButton( "金币不足" );
              }
              skillNameLabel.text = skill.Name + "lv." + skill.Level;
              jieshao.text = "当前技能的攻击力为:" + (skill.Damage * skill.Level) + "下一级技能的攻击为:" +
                     (skill.Damage * (skill.Level + 1))+ "升级所需要的金币数:" + (500 * (skill.Level + 1));
              
       }
        void OnUpgrade()
       {
               PlayerInfo info = PlayerInfo ._instance;
               if (skill.Level<info.Level)
              {
                      int coinNeed = 500 * (skill.Level + 1);
                      bool isSuccess = info.GetCoin(coinNeed);
                      if (isSuccess)
                     {
                           skill.Upgrade();
                           OnSkillClick(skill);
                     }
                      else
                     {
                           DisableUpgradeButton( "金币不足" );
                     }
              }
               else
              {
                     DisableUpgradeButton( "技能不能人物等级" );
              }
       }
              
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值