流光显示与血条形成

流光显示与血条形成_第1张图片
1.流光特效,在Canvas下建Image1,在Image1下添加

脚本(如下)
2.将流光特效图片转化为精灵(Script)模式选中拖

进数组Spritezhong
3.在Image1下建立子物体Image2,并选择合适大小

image精灵图片拖拽至Image1上方从而实现流光特效

环绕效果

血条控制, 以下Image不同于上方,属于独立
1.同样在Canvas下新建立Image1不需要填充Source

Image,在Image1下建立子物体Image2,在Source

Image槽中填充带有颜色的精灵图片,把Image2拖拽

盖住Image1
2.建立两个Text,系统会自动出现在Canvas中,选中

Text,可在其组件Text修改文本,也可通过程序脚本

实现(如脚本中的information)
3.脚本中多个图片显示不再演示(就是脚本中的三个if)

血条形成脚本
using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class Uicanvas : MonoBehaviour {
    public Image image1;
    public Text informationtext;
    private float total = 1000;//设置血条总血量
    public float current;
    // Use this for initialization
    void Start () {
        informationtext = GameObject.FindGameObjectWithTag("current").GetComponent();//通过tag找到组件Text并用information接收
        current = total;//把总血量赋值给当前血量
    }
    float value;
// Update is called once per frame
void Update () {
    //以下控制多个图片位置,如三个重叠的图片通过按键A,S,D调换显示先后
    //if (Input.GetKeyDown(KeyCode.A))
    //{
    //    image1.transform.SetAsFirstSibling();
    //}
    //if (Input.GetKeyDown(KeyCode.S))
    //{
    //    image1.transform.SetSiblingIndex(1);
    //}
    //if (Input.GetKeyDown(KeyCode.D))
    //{
    //    image1.transform.SetAsLastSibling();
    //}

    if (Input.GetKey(KeyCode.A))//当按下A键时,模拟受到攻击
    {
        value = Random.Range(0, 20);
        current -= value;//当前血量减去受到的伤害
        image1.fillAmount = current / total;//image1.fillAmount最大值为1,所以在这里用百分数计算

    }
    if (current <0)//控制血量范围0~total,否则会出现负的血量
    {
        current = 0;
    }
    string str = string.Format("当前血量:{0}", current);//字符串实例化
    informationtext.text = str;




}

}

*********************************

流光显示脚本
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System;

public class LiuGangDemo : MonoBehaviour {
public Sprite[] sprite;
public Image image;
// Use this for initialization
void Start () {
Array.Sort(sprite, (x, y) => { return x.name.CompareTo(y.name); });
image = GetComponent();
}
int index;
int count;
// Update is called once per frame
void Update () {
count++;
if (count > 6)
{
if (index != sprite.Length - 1)
{
index++;
}
else
{
index = 0;
}

        image.sprite = sprite[index];
        count = 0;
    }

}
}

你可能感兴趣的:(unity,脚本)