作为一个小萌新,我也终于开始使用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 版权协议,转载请附上原文出处链接和本声明。