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("技能不能人物等级");
}
}
}