Unity如何将数字图片分解成数字显示出来——第一篇笔记

  • Post author:
  • Post category:其他


作为一个小萌新,我也终于开始使用CSDN来记录自己的笔记了,废话不多说,进入正题。

我希望的是能够获取图片0~9,并且将其根据数值进行一定顺序的排列,网上看到的设置自定义字体,本人感觉相对来说比较麻烦,而且我也不需要一直使用这个字体,所以就简单的自己写了个代码(因为自己也是刚学习不久的阶段,不排除网上有雷同)。

首先,需要一张图片,图片背景透明(这个图片随便找的)。
在这里插入图片描述

然后放入Unity,将sprite Mode改成 Multiple->Apply->Spite Editor
在这里插入图片描述

Slice,切成如下10张图片,Apply

在这里插入图片描述

接着就是创建10个对象,并拖入这10张图片,制作成预制体。

在这里插入图片描述

脚本如下:

public GameObject[] Digital;  //数字0~9的预制体
    public Transform[] texturePos;  //生成的最终位置
    public GameObject canvas;  //Canvas
    GameObject[] texture = new GameObject[3];  //用于存储三位数预制体
    ScoreManager manager;   //用于获取分数,自己写的类可忽略.

    private void Start()
    {
        manager = GameObject.Find("ScoreManager").GetComponent<ScoreManager>();
        CreateTexture();
    }
    public void CreateTexture()  //创建函数
    {
        for (int i = 0; i < 3; i++)
        {
            if (texture[i] != null)
            {
                Destroy(texture[i]);
            }
        }

        int Digits = manager.BestScore % 10;
        int Tens = manager.BestScore / 10 % 10;
        int Hundred = manager.BestScore / 100 % 10;

        texture[0] = Instantiate(Digital[Digits], transform);  //默认位置创建
        texture[1] = Instantiate(Digital[Tens], transform);
        texture[2] = Instantiate(Digital[Hundred], transform);

        texture[0].transform.SetParent(canvas.transform, false);  //作为Canvas的子对象
        texture[1].transform.SetParent(canvas.transform, false);
        texture[2].transform.SetParent(canvas.transform, false);

        texture[0].transform.localPosition = texturePos[0].localPosition; //更改相对Canvas局部坐标
        texture[1].transform.localPosition = texturePos[1].localPosition;
        texture[2].transform.localPosition = texturePos[2].localPosition;
    }

最后将脚本挂入对象运行即可。运行效果如下:

在这里插入图片描述

这是背景没透明的原因。



版权声明:本文为Assassinbaba原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。