前言
Unity2D没有提供SpriteRenderer上显示文字的原生方案。经过笔者探索,有以下两种方式可供选择。
1,Canvas节点挂载方式
2,TextMesh方式
Canvas节点挂载方式
1,新建Canvas节点
设置宽高为设计分辨率。
特别注意:该节点的Layer我设置了UI_3D
2,添加Text组件
在需要显示文字的地方,新建一个空节点bg,作为Text组件的父物体,设置bg的pos归零,后续可以通过调节bg的scale来控制Text的FontSize。
在bg下添加子物体Text。注意需要设置bg和Text的Layer和步骤1中提到的Canvas的Layer一致,否则不渲染。
TextMesh方式
通过3D Object——>3D Text的方式添加TextMesh。
设置Offset Z为-1,同时把SpriteText.cs脚本拖拽到TextMesh上。脚本内容如下。
public class SpriteText : MonoBehaviour
{
void Start()
{
var parent = transform.parent;
var parentRenderer = parent.GetComponent<Renderer>();
var renderer = GetComponent<Renderer>();
renderer.sortingLayerID = parentRenderer.sortingLayerID;
renderer.sortingOrder = parentRenderer.sortingOrder;
}
}
来源:https://answers.unity.com/questions/620747/render-text-on-sprite-prefab-2d-ios.html