Unity建立跟踪3D模型中心点的UI及显示一些内容

前提条件:已经创建了2DUI。

需要的组件如下(按层级):

Image

     Image

          TEXT

Panel

     Image添加Mask组件

        TEXT

     滚动条

傻瓜式步骤如下:

1、建立Imgae-我命名为跟踪点(图片是自己做的)。

28823951473d44ee8e913120b66c3a59.png

2b1ebaecf7844fb5ab5474cf52821109.png 

0b5bd91cacb945d1a5cc98d4442f5b1e.png 

2、在上层的下一级创建image作为UI的底板,我命名为Image底板(图片自己做的)

d7fb888fe6e7437cb7495d38fb01dd71.png

c14b5055cabd414287a36a3bb666ab4a.png 3、底板下创建文本,作为标题(图片自己做的)。

0374ca25307345adb7dcbd5766a1cf82.png

4、与底板同级,创建一个panel用来承载内容,我命名为内容,并使其透明。

d7a3fc4fb1ab4f82957c1fe23c50970f.png

 

2f2fbbcb4a63429089b9358428be7c33.png

 5、内容层级下创建一个遮罩和一个滚动条,

        先创建image,并在下级创建text

        d12974f1c4b445a5af8433bccc5c45f7.png

给遮罩添加如下组件

95550b8189274726986f23b6f16d47c0.png 

颜色推荐如下

d22be096b4ce4d42bf2549cd3f1b6ab0.png

添加一个滚动条并添加一些文本用于观察效果 

 

 2a3ce27a9dcb43bf92d6a0b4eaa42bc7.png

配置遮罩

e756ddd2fa204ad982b60d05e05f580c.png

 fa4c73c6e8fa4515858aeb129ae45eb3.png

配置滚动条

 

 配置好UI之后对模型进行操作。

需要点击显示的模型加上碰撞器。

3c17607f820d45d79cde610200379849.png

 

写一个脚本,如下:

 

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

public class UIPosition : MonoBehaviour
{
    //点击模型出现UI,UI跟随指定模型移动,UI自动缩放
    //public GameObject Cube;//3D对象
    public GameObject Image;//UI对象
    public float Aixsx, Aixsy, Aixsz;
    public Text objectname;
    void Update()
    {
        
        Vector3 pos = Camera.main.WorldToScreenPoint(this.gameObject.transform.position);
        //XYZ偏移定位,防止遮盖3D对象
        Image.transform.position = new Vector3(pos.x + Aixsx, pos.y + Aixsy, pos.z + Aixsz);
        //动态设备名称
        objectname.text = this.gameObject.name;
        if (Input.GetMouseButtonDown(0))
        {
            //从摄像机发出到点击坐标的射线
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            //获取物理碰撞器
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                //打印射线所点击的物体名称
                //print(hit.collider.gameObject.name);
                //switch (this.gameObject.name) {
                //    case "RFID(15)":
                //        Image.gameObject.SetActive(Image.gameObject.activeSelf ? false : true);
                //        break;

                //}
                if (hit.collider.gameObject.name == this.gameObject.name)
                {
                Image.gameObject.SetActive(Image.gameObject.activeSelf ? false : true);
                }
            }
        }
    }

}

 挂上

1eee5d0f49994a3e9529e7fe16b27e56.png

 

挂到带有碰撞体的模型上。

将图像和文本赋值。 

e649ef414f10430dadab5ab862b738da.png

运行后点击该模型便会显示

 

二次点击就会消失。OK。原理不做补充,具体可以留言。

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NS_Speak

避免各种踩坑,请多关注!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值