跳转到主内容
思享编程网:思考分享,玩转编程世界!

Unity UGUI UI数字管理器怎么做?

Hey,小伙伴们,是不是在使用Unity的UGUI时,遇到不能直接显示数字或者字体不合适的问题?美术提供的0~9数字UI又难以匹配到UGUI上?别急,今天就来跟大家分享一个数字UI管理器,它可以帮助你轻松解决这个问题!

什么是数字UI管理器?

数字UI管理器是一个Unity脚本,它可以帮助你快速获取和设置数字UI的精灵。通过这个管理器,你可以轻松地展示数字、字母、加号、减号和冒号等。

NumSpriteManager脚本详解

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;

//数字精灵
public class NumSpriteManager : MonoBehaviour {
    //数字列表1
    public Sprite[] m_numList01;
    //数字列表2
    public Sprite[] m_numList02;
    //数字列表3
    public Sprite[] m_numList03;
    //数字列表4
    public Sprite[] m_numList04;
    //数字列表5
    public Sprite[] m_numList05;
    //数字列表6
    public Sprite[] m_numList06;
    //数字列表7
    public Sprite[] m_numList07;
    //数字列表8
    public Sprite[] m_numList08;
    //字母列表
    public List m_letterList;

    //加号
    public Sprite m_plus;
    //减号
    public Sprite m_substact;
    //冒号1
    public Sprite m_colon01;
    //冒号2
    public Sprite m_colon02;

    // Use this for initialization
    void Start () {
    }
    
    // Update is called once per frame
    void Update () {
    }

    //获取数字精灵1
    public Sprite GetNumSpriteType01 (int num )
    {
        if (m_numList01 == null || m_numList01.Length < num + 1)
            return null;
        return m_numList01[num];
    }

    //获取数字精灵2
    public Sprite GetNumSpriteType02(int num)
    {
        if (m_numList02 == null || m_numList02.Length < num + 1)
            return null;
        return m_numList02[num];
    }

    //获取数字精灵3
    public Sprite GetNumSpriteType03(int num)
    {
        if (m_numList03 == null || m_numList03.Length < num + 1)
            return null;
        return m_numList03[num];
    }

    //获取数字精灵4
    public Sprite GetNumSpriteType04(int num)
    {
        if (m_numList04 == null || m_numList04.Length < num + 1)
            return null;
        return m_numList04[num];
    }

    //获取数字精灵5
    public Sprite GetNumSpriteType05(int num)
    {
        if (m_numList05 == null || m_numList05.Length < num + 1)
            return null;
        return m_numList05[num];
    }

    //获取数字精灵6
    public Sprite GetNumSpriteType06(int num)
    {
        if (m_numList06 == null || m_numList06.Length < num + 1)
            return null;
        return m_numList06[num];
    }

    //获取数字精灵7
    public Sprite GetNumSpriteType07(int num)
    {
        if (m_numList07 == null || m_numList07.Length < num + 1)
            return null;
        return m_numList07[num];
    }

    //获取数字精灵8
    public Sprite GetNumSpriteType08(int num)
    {
        if (m_numList08 == null || m_numList08.Length < num + 1)
            return null;
        return m_numList08[num];
    }
    
    //获取字母
    public Sprite GetLetterType(int num)
    {
        if (m_letterList == null || num < 0 || num > 26) return null;
        return m_letterList[num - 1];
    }

    //获取加号
    public Sprite GetPlusSign()
    {
        return m_plus;
    }

    //获取减号
    public Sprite GetSubstactSign()
    {
        return m_substact;
    }

    //获取冒号1
    public Sprite GetColonSign01()
    {
        return m_colon01;
    }
    //获取冒号2
    public Sprite GetColonSign02()
    {
        return m_colon02;
    }
}

使用方法

将脚本挂载到物体上,然后拖入0~9个数字精灵,或者其他的。接下来,你可以使用以下方法来设置数字:

public void SetNum(int score, NumSpriteManager numSpriteManager)
{
    for (int i = 0; i < puc_numScores.Length; i++)
    {
        puc_numScores[i].gameObject.SetActive(false);
    }

    string str_nums = score.ToString();
    for (int i = 0; i < str_nums.Length; i++)
    {
        string str_num = str_nums.Substring(i, 1);
        //打开对应的分数ui
        puc_numScores[i].gameObject.SetActive(true);
        //设置分数ui的精灵
        puc_numScores[i].overrideSprite = numSpriteManager.GetNumSpriteType01(int.Parse(str_num));
        //puc_numScores[i].SetNativeSize();
    }
}

看懂了的小伙伴们,记得点赞支持哦!

我是陆砚码,来自「思享编程网」(www.sxgpb.com),这里还有更多精彩的技术分享等你来探索!

相关文章