unity3d-学习笔记19-卡牌游戏制作(战斗胜利界面,点击菜单栏出现其他选项以及对应功能,实现能量卡消耗蓝条)

战斗胜利界面

思路

在桌面类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图标
能量卡的消耗需要可视化———————完成

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淳杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值