先看效果:
首先,需要0到9的图片(背景需要透明),并且做成预制体(一个带Image组件的物体就可以):
新建一个脚本,声明一个GameObject类型的数组(也可以是其他容器,随便你啦),挂载到场景上的游戏物体上,并且引用0到9数字的十个预制体:
接下来是代码:
using UnityEngine;
public class NumberText : MonoBehaviour
{
//数字图片预制体数组
public GameObject[] nums;
public void DisplayNumber(int number,Transform tf,float distance = 50f)
{
// 将数字转换为字符串
string numberString = number.ToString();
// 计算开始位置,以使数字居中
float startX = -((numberString.Length - 1) * distance) / 2f;
// 遍历每个字符,创建对应的数字图片
for (int i = 0; i < numberString.Length; i++)
{
// 获取当前字符对应的数字
int digit = int.Parse(numberString[i].ToString());
// 实例化数字预制体
GameObject digitObject = Instantiate(nums[digit], tf);
// 调整位置(可选)
digitObject.transform.localPosition = new Vector3(startX + i * distance, 0, 0);
}
}
private void Start()
{
DisplayNumber(987,transform.Find("Image"),40f);
}
}
防止大家看不懂(注释已经够清楚啦!),简单介绍一下DisplayNumber()这个方法:第一个参数number就是我们要显示的数字,第二个参数是为实例化出来的预制体准备的父物体,第三个参数是每个预制体之间的间隔。代码中还添加了自动居中的功能,不想要可以去掉。
如果想修改图片文字的大小,可以直接修改父物体的缩放(当然你也可以用其他方法),就是这个Image
喜欢的可以点个关注,以后不定时更新更多Unity小技巧~
可以关注我的公众号,有免费开发资源分享: