UGUI研究之Sprite

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值