战斗胜利界面
思路
在桌面类update方法里不断判断,获取boss的血量,当≤0时,播放boss被打死消失的动画,以及出现战斗胜利的界面(没有美工所以直接用一个图来代替了)
代码
获取血量并进行判断
int bossLife = int.Parse(GameObject.Find("lifeNumber").GetComponent<Text>().text);
BossLifeCheck();
if (bossLife<=0)
{
StartCoroutine(bossDead());
}
切换boss动画以及出现胜利动画
IEnumerator bossDead()
{
BossInf.BossDeadAnimation();
yield return new WaitForSeconds(3f);
GameObject.Find("boss").GetComponent<Image>().DOFade(0, 1f);
yield return new WaitForSeconds(1f);
winImg.SetActive(true);
winImg.transform.DOScaleX(20, 1f);
winImg.transform.DOScaleY(12, 1f);
winImg.GetComponent<Image>().DOFade(1, 1f);
}
实现点击菜单栏出现其他选项以及对应功能
思路
给菜单栏添加两个button组件(我这里是一个返回主界面,一个备用),将他们一开始设置为false。在菜单栏中加载脚本,脚本里添加一个计数器,用来判断是第几次点击(奇数则将一开始设置为false的button组件激活;为偶数则将其再设置为false)
代码
public CanvasGroup all;
public static int showMenuNUm;
private GameObject menuParent;
private GameObject back;
private GameObject menuElse;
private void Start()
{
showMenuNUm = 0;
menuParent = GameObject.Find("Menu");
back = menuParent.transform.GetChild(1).gameObject;
menuElse = menuParent.transform.GetChild(2).gameObject;
all = GameObject.Find("Canvas").GetComponent<CanvasGroup>();
}
public void ShowMenu()
{
if (showMenuNUm%2==0)
{
back.SetActive(true);
menuElse.SetActive(true);
}
if(showMenuNUm % 2 == 1)
{
back.SetActive(false);
menuElse.SetActive(false);
}
showMenuNUm++;
}
实现返回主界面按键功能
思路
创建点击事件,点击之后切换scene到主界面即可
代码
public void BTGS()
{
StartCoroutine(WaitToChange());
}
IEnumerator WaitToChange()
{
all.DOFade(0, 0.5f);
yield return new WaitForSeconds(0.5f);
SceneManager.LoadScene("GameStart_0");
}
优化战斗胜利的功能
当boss血量小于0时,将下一回合的isnextround设置为false,这样当点击下一回合的时候就不会有牌再打出来了
实现能量卡消耗
思路
在打出卡,桌面类判定卡类型的方法里,添加一个对卡是否需要消耗蓝卡的判断,如果是,则对应的扣除能量,不是则不扣除
代码
先判断是否需要消耗魔力
if (int.Parse(cardCost) > 0 && int.Parse(GameObject.Find("energy_characterNumber").GetComponent<Text>().text) > int.Parse(cardCost))
{
CharacterEnergyCheck(int.Parse(cardCost));
}
private void CharacterEnergyCheck(int energyCost)
{
//获取当前能量值,然后减去打出的卡的值,再显示出来
int energyNumPass = int.Parse(GameObject.Find("energy_characterNumber").GetComponent<Text>().text);
characterInf.GetChild(3).GetChild(1).GetComponent<Text>().text = (energyNumPass - energyCost) + "";
characterInf.GetChild(3).GetChild(0).GetComponent<Image>().DOFillAmount((energyNumPass - energyCost)*0.01f,0.3f);
}
注意:还需要在桌面类里定义一个静态变量用来储存打出的卡所需消耗的值
添加战斗结束的判定和界面——————完成
把战斗的界面统一到所有需要战斗的事件里
添加除战斗界面的其他事件界面
boss简单的攻击模式(也要能打出卡的)
ui,原画等精细优化
画面一侧要有出牌的记录
人物的buff图标
能量卡的消耗需要可视化———————完成