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