UGUI实现回合制游戏多技能滑动条与血条伤害

发表于2018-05-14
评论0 923浏览
本篇主要教大家怎么用UGUI实现回合制游戏中的一些功能,包括了多技能滑动条、血条的制作、技能与血条伤害的控制等这些,在开发的时候都是会经常碰到的。


1、多技能滑动条

实现滑动方法比较简单。
首先,做一下排列,创建一个空物体,然后添加一个排列的属性,如图:
然后把技能图标都放到该空物体之下,控制其中的一个cell size属性,你会发现很容易就排列好了。
然后,把这个物体放倒一个image下,给image添加一个scroll rect项,这个就是用来控制滑动的,还有添加一个遮罩mask项,通过细微调整里面的属性,以便达到你想要的要求。


2、血条的制作

血条这个比较简单了,原理就是两张图片image,一张是背景,一张作为背景的子项,作为红色的血条。
给背景添加一个slider,把红色血条的图片拖到fill rect属性下,然后就做成了。

3、技能与血条伤害的控制

我用委托来实现的技能的按键,如下代码:
<span style="white-space:pre">    </span>voidStart () {  
                mAnim = GetComponent<Animator>();  
                mAnim.SetBool ("idle",true);  
                mAnim.SetBool ("skill",false);  
                //EventDelegate AttackEvent = new EventDelegate (this, "OnAttackClick");  
                //GameObject.Find ("Attack").GetComponent<UIButton> ().onClick.Add (AttackEvent);  
                //imagefill = GameObject.Find ("Canvas").transform.Find ("bloodItem").GetComponent<Image> ();  
        }  
        publicvoid OnAttackClick() {  
                if(isWaitPlayer && ifUIshow) {  
                        //mAnim.SetTrigger("attack1");  
                        mAnim.SetBool("idle",false);  
                        mAnim.SetBool ("skill",true);  
                        isWaitPlayer = false;  
                        ifUIshow = false;  
                        Debug.Log ("在第"+ index + "回合:主角使用了飞剑斩");  
                        index += 1;  
                        print (HP);  
                        //GameObject.Find ("ButtonAll").SetActive (false);  
                }  
                //GameObject.Find ("ButtonAll").SetActive (false);  
                GameObject.Find ("Canvas").transform.Find ("ButtonAll").gameObject.SetActive (false);  
        }  

伤害与血条部分的控制代码如下图:

该篇是接着上一篇快速实现回合制游戏的补充,把ui部分改成了ugui来写,大家可以作为参考。工程打个包,回复可下载。有问题可以在下面提问或者私聊我。
我自己发现个问题,就是如下图的部分,注释掉,不然会出错,原因是我在面板里已经制指定了,这里就不需要了。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引