UGUI研究之Sprite

来源:互联网 发布:复杂sql 语句编写经验 编辑:程序博客网 时间:2024/05/17 04:43

UGUI研究之Sprite

学习untiy已经有一段不短的时间,一直没有有效的记录下来,实在遗憾,今天开始记录。 2017 - 01 - 13
最近在写蛮牛的一个每月训练营,超级玛丽,包括UI的切换,获取金币的记录等效果,其中用到记录场景中金币获取数量的地方,用sprite来实现。

-如图所示,场景中超级玛丽可以获取金币,要在右下角显示出获取金币的数量,就需要用到sprite,以前没使用过UGUI的图集,现在来尝试一下

-* 如图所示,是UGUI中Image的属性面板,其中,Source Image为Image要显示的图片,可以为Sprite,将要显示的Sprite拖拽到该栏目中*

using UnityEngine;using System.Collections;using UnityEngine.UI;public class CoinNumContorller : MonoBehaviour {    public Sprite[] NumberImage;    public void SetCoinValue(int value)    {        value = Mathf.Clamp(value, 0, NumberImage.Length);           //value的范围在0-9        this.GetComponent<Image>().sprite = NumberImage[value];        //获取到图片数字组件    }}

直接上代码,这段代码是配置图集的,将此代码的.cs文件拖拽到image上
根据你的需要配置好图集

using UnityEngine;using System.Collections;using UnityEngine.UI;using UnityEngine.Sprites;using UnityEditor;using UnityEditor.Sprites;using System;public class Gaming : MonoBehaviour {    // Use this for initialization    public CoinNumContorller CoinFirst;    public CoinNumContorller CoinSecond;    public CoinNumContorller CoinThird;    public static int CoinValue;    public void UpdateCoinValue(int value)    {        value = Mathf.Clamp(value , 0 , 999);        CoinValue = value;        var stringValue = value.ToString();    //把value转换成字符串类型        if (stringValue.Length <= 1)        {            CoinFirst.GetComponent<Image>().enabled = true;            CoinFirst.SetCoinValue((int)Char.GetNumericValue(stringValue[0]));   //获取字符串的第一位            CoinSecond.GetComponent<Image>().enabled = false;            CoinThird.GetComponent<Image>().enabled = false;        }        else if (stringValue.Length == 2)        {            CoinFirst.GetComponent<Image>().enabled = true;            CoinSecond.GetComponent<Image>().enabled = true;            CoinThird.GetComponent<Image>().enabled = false;            CoinFirst.SetCoinValue((int)Char.GetNumericValue(stringValue[0]));            CoinSecond.SetCoinValue((int)Char.GetNumericValue(stringValue[1]));        }        else        {            CoinFirst.GetComponent<Image>().enabled = true;            CoinSecond.GetComponent<Image>().enabled = true;            CoinThird.GetComponent<Image>().enabled = true;            CoinFirst.SetCoinValue((int)Char.GetNumericValue(stringValue[0]));            CoinSecond.SetCoinValue((int)Char.GetNumericValue(stringValue[1]));            CoinThird.SetCoinValue((int)Char.GetNumericValue(stringValue[2]));        }    }    void Start () {    }    // Update is called once per frame    void Update () {        UpdateCoinValue(CoinController.CoinNum);  //更新获取到的金币数量    }}

总结一下,其实方法很简单,就是创建一个Sprite的数组,用来存每一个图集的数字,然后根据需求显示出来
发现一个方法很简单的处理显示数字第几位的方法,如上图所示
CoinFirst.SetCoinValue((int)Char.GetNumericValue(stringValue[0]));
//获取字符串的第几位,先把Int转换成String,然后获取

参考博客:
转自蛮牛一个博主的实现方法:

0 0