首页 > 技术文章 > UNITY UGUI跟随3D物体的坐标转换

guangzhiruijie 2022-01-20 12:58 原文

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UICollor : MonoBehaviour {
    public  GameObject model;//随便选一个3d模型point
    public Image image;//ugui图片
    public Text text;  //ugui图片text
    public float sety = 1;
    public LineRenderer line;   //line
    Vector3[] positions = new Vector3[] { Vector3.zero, Vector3.zero };
  
    void Update()
    {
       // Vector3 Nposition = Camera.main.WorldToScreenPoint(new Vector3(model.transform.position.x, model.transform.position.y, model.transform.position.z));
        image.transform.position = Camera.main.WorldToScreenPoint(new Vector3(model.transform.position.x, model.transform.position.y+sety, model.transform.position.z));
        //image.transform.position = Camera.main.WorldToScreenPoint(model.transform.position);
        Vector3 Lposition = Camera.main.ScreenToWorldPoint(image.transform.position);
        positions[0] = model.transform.position;
        positions[1] = Lposition;
        line.transform.position = model.transform.position ;
        line.SetPositions(positions);

    }
    //显示文字
    public void SetText(string value)
    {
        text.text = value;
    }
    //图片消失
    public void SetDisPlay()
    {
        image.gameObject.SetActive(false);
    }
    //图片出现
    public void Setplay()
    {
        image.gameObject.SetActive(true);
    }
    //
    public void SetModel(GameObject model)
    {
        this.model = model;
    }
    //线出现
    public void SetLineplay()
    {
        line.gameObject.SetActive(true);
    }
    //线消失
    public void SetLineHiding()
    {
        line.gameObject.SetActive(false);
    }

}

Update里面这样也是可以的

这边写一个协程 功能是一个模型一个模型的显示名称   具体使用自己看情况,自己写下来方便记载

 

推荐阅读