在模型顶部添加标签说明

一、在Unity中常需要为模型添加文字标签来作为模型的名字

1、常常将标签放在模型的顶部

2、脚本代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ShowTheLabel : MonoBehaviour 
{
    GameObject objCube;
    Transform tfCube;
    public Font customFont;
    float modelHeight;
    Collider collid;


    private void Start()
    {
        objCube = GameObject.Find("Cube");
        tfCube = objCube.GetComponent<Transform>();
        collid = objCube.GetComponent<Collider>();//获取物体身上的碰撞器

        float model_y = collid.bounds.size.y; //由碰撞器来获取模型的初始高度
        float scale_y = tfCube.localScale.y; //获取模型的缩放比例

        modelHeight = model_y * scale_y; //获取模型的真实高度


    }

    private void OnGUI()
    {
        //需要获取模型头顶所在位置的3D坐标
        //根据模型坐标原点的位置来决定其高度要加多少,在此由于坐标原点在中心,所以Y方向上加模型一半的高度
        Vector3 worldPos = new Vector3(tfCube.position.x, tfCube.position.y+modelHeight/2, tfCube.position.z);
        //根据3D坐标来转换成2D屏幕上的对应坐标
        Vector2 mapPosition = Camera.main.WorldToScreenPoint(worldPos);
        //计算得到真实的头顶2D坐标
        Vector2 pos = new Vector2(mapPosition.x, Screen.height - mapPosition.y);

        // 计算要显示的 GUI.Label 尺寸
        Vector2 nameSize = GUI.skin.label.CalcSize(new GUIContent("master"));


        GUI.skin.label.normal.textColor = Color.red;//设置GUI.Label字体的颜色
        GUI.skin.label.fontSize = 30;//字体的大小
        GUI.skin.label.font = customFont;//字体的样式
        GUI.Label(new Rect(pos.x - (nameSize.x / 2), pos.y - nameSize.y, nameSize.x, nameSize.y), "master");


    }

}

3、效果如下

二、注意

1、有的模型没有碰撞器 Collider ,此时需要先为模型添加碰撞器。否则可以不使用碰撞器,通过自己尝试不同的数值来试出合适的位置数据。

2、碰撞器的大小可以调整,从而来调整标签的坐标位置

3、对于 GUI.Label 的字体可以将其设定为 public ,然后再在Inspector 中将对应的字体拖到其上就可以。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值