GameTang
圣骑士
圣骑士
  • UID4314
  • 粉丝3
  • 关注2
  • 发帖数43
  • 社区居民
阅读:463回复:0

菜鸟日记《三》 (字体模型或贴图的替换代替数字UI)

楼主#
更多 发布于:2018-01-08 16:24
在做一个卡通类型的有事,关于分数显示这个问题做个简单的处理,如果要贴合场景风格来说的话,Unity自带的字体来说不太符合,肯定要替换的,那就替换成模型或者图片,风格形状可以自由把握
直接贴代码,不明的我都贴有注释,也是怕自己一放置,自己也捡不起来





using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class Fraction : MonoBehaviour
{
    public float count;
    private float lastCount;                                      //记录上次传入数据,来判断数据分数显示是否刷新
    public List<GameObject> IconList = new List<GameObject>();    //要替换的字体列表
    public List<GameObject> fenshuList = new List<GameObject>();  //需要显示的UI列表
    private char[] FenArray = new char[] { '0', '0', '0', '0' };  //数组的长度和分数最大长度相同
    private char[] array;                                         //数据临时转存的承载数组
    // Use this for initialization
    void Start()
    {
        lastCount = 1;                   //初始赋值,避免初次传入数据相同不运行计算
    }

    // Update is called once per frame
    void Update()
    {
      
        FractionManager(count);
    }
    /// <summary>
    /// 传入分数,根据数值加载不同的文字UI对象
    /// </summary>
    /// <param name="fenshu"></param>
    void FractionManager(float fenshu)
    {
        if (fenshu.ToString("f0") == lastCount.ToString("f0"))                  //此次传入的数据与上次相同的话,返回不执行
        {
            return;
        }

        lastCount = fenshu;                                                     //记录上次传入的数据,
        if (fenshu <= 0.5f)
        {
            array = new char[] { '0' };                                
        }
        else
        {
            string receive = fenshu.ToString("f0");                             //数据类型转换,并四舍五入保留整数
            array = receive.ToCharArray();                                      //数据转换成字符数组
            print("array.Length" + array.Length);
        }

        FenArray = new char[] { '0', '0', '0', '0' };                            //重置数组,刷新数组
        Array.Copy(array, 0, FenArray, FenArray.Length - array.Length, array.Length);  //数据转存

        print("第一位:" + FenArray[0]);
        print("第二位:" + FenArray[1]);
        print("第三位:" + FenArray[2]);
        print("第四位:" + FenArray[3]);
    }
    /// <summary>
    /// 根据传入的列表,替换图像
    /// </summary>
    /// <param name="charArray"></param>
    void ReplaceIcon(char[] charArray)
    {
        //分数的个位数图标替换
        fenshuList[3] = ReturnFenShu(charArray[3]);
        //分数的十位数图标替换
        fenshuList[2] = ReturnFenShu(charArray[2]);
        //分数的百位数图标替换
        fenshuList[1] = ReturnFenShu(charArray[1]);
        //分数的千位数图标替换
        fenshuList[0] = ReturnFenShu(charArray[0]);
    }
    /// <summary>
    /// 传入数组的索引下标,返回字符对应的对象
    /// </summary>
    /// <param name="index"></param>
    /// <returns></returns>
    GameObject ReturnFenShu(char index)
    {
        GameObject fenshuObj = null;
        switch (index)
        {
            case '0':
                fenshuObj = Instantiate(IconList[0]);
                break;
            case '1':
                fenshuObj = Instantiate(IconList[1]);
                break;
            case '2':
                fenshuObj = Instantiate(IconList[2]);
                break;
            case '3':
                fenshuObj = Instantiate(IconList[3]);
                break;
            case '4':
                fenshuObj = Instantiate(IconList[4]);
                break;
            case '5':
                fenshuObj = Instantiate(IconList[5]);
                break;
            case '6':
                fenshuObj = Instantiate(IconList[6]);
                break;
            case '7':
                fenshuObj = Instantiate(IconList[7]);
                break;
            case '8':
                fenshuObj = Instantiate(IconList[8]);
                break;
            case '9':
                fenshuObj = Instantiate(IconList[9]);
                break;
        }
        return fenshuObj;
    }
}








这只是思路的搭建,项目还没有进行到这,我只是记录下思路,用的时候还是要根据具体细节去更改

欢迎分享

游客

返回顶部