欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

unity實(shí)現(xiàn)UI元素跟隨3D物體

 更新時(shí)間:2020年04月17日 11:32:53   作者:夸克電子漿  
這篇文章主要為大家詳細(xì)介紹了unity實(shí)現(xiàn)UI元素跟隨3D物體,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了unity實(shí)現(xiàn)UI元素跟隨3D物體的具體代碼,供大家參考,具體內(nèi)容如下

在Canvas不同的渲染模式(RenderMode)下實(shí)現(xiàn)UI跟隨3D物體

當(dāng)Canvas.RenderMode為Screen Space-Overlay時(shí)

利用WorldToScreenPoint(worldPos)將物體的世界坐標(biāo)轉(zhuǎn)換成屏幕坐標(biāo),實(shí)時(shí)更新UI的坐標(biāo):

using UnityEngine;
using System.Collections;

public class FollowWorldObj : MonoBehaviour {
 [SerializeField]
 GameObject worldPos;//3D物體(人物)
 [SerializeField]
 RectTransform rectTrans;//UI元素(如:血條等)
 public Vector2 offset;//偏移量

 // Update is called once per frame
 void Update () {
  Vector2 screenPos=Camera.main.WorldToScreenPoint(worldPos.transform.position);
  rectTrans.position = screenPos + offset;
 }
}

當(dāng)Canvas.RenderMode為Screen Space-Camera時(shí)

利用RectTransformUtility.ScreenPointToLocalPointInRectangle換算出UI元素在Canvas的2D坐標(biāo):

using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;

public class UI_FollowObj : MonoBehaviour {
 [SerializeField]
 Camera UI_Camera;//UI相機(jī)
 [SerializeField]
 RectTransform image;//UI元素
 [SerializeField]
 GameObject obj;//3D物體
 [SerializeField]
 Canvas ui_Canvas;
 // Update is called once per frame
 void Update () {
  UpdateNamePosition();
 }
 /// <summary>
 /// 更新image位置
 /// </summary>
 void UpdateNamePosition()
 {
  Vector2 mouseDown = Camera.main.WorldToScreenPoint(obj.transform.position);
  Vector2 mouseUGUIPos = new Vector2();
  bool isRect = RectTransformUtility.ScreenPointToLocalPointInRectangle(ui_Canvas.transform as RectTransform, mouseDown, UI_Camera, out mouseUGUIPos);
  if (isRect)
  {
   image.anchoredPosition = mouseUGUIPos;
  }
 }
}

效果如下:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#中常見(jiàn)的數(shù)據(jù)緩存方式匯總

    C#中常見(jiàn)的數(shù)據(jù)緩存方式匯總

    在C#開(kāi)發(fā)中,數(shù)據(jù)緩存是一種優(yōu)化應(yīng)用程序性能的常見(jiàn)技術(shù),合理的緩存策略可以減少對(duì)數(shù)據(jù)源的訪(fǎng)問(wèn)次數(shù),提高數(shù)據(jù)處理速度,從而改善用戶(hù)體驗(yàn),下面將詳細(xì)介紹幾種在C#中常見(jiàn)的數(shù)據(jù)緩存方式,以及相應(yīng)的實(shí)例,需要的朋友可以參考下
    2024-05-05
  • C#多線(xiàn)程中如何運(yùn)用互斥鎖Mutex

    C#多線(xiàn)程中如何運(yùn)用互斥鎖Mutex

    這篇文章主要為大家詳細(xì)介紹了C#多線(xiàn)程中如何運(yùn)用互斥鎖Mutex,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 基于不要返回null之EmptyFactory的應(yīng)用詳解

    基于不要返回null之EmptyFactory的應(yīng)用詳解

    本篇文章對(duì)不要返回null之EmptyFactory進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C#中實(shí)現(xiàn)線(xiàn)程同步lock關(guān)鍵字的用法詳解

    C#中實(shí)現(xiàn)線(xiàn)程同步lock關(guān)鍵字的用法詳解

    實(shí)現(xiàn)線(xiàn)程同步的第一種方式是我們經(jīng)常使用的lock關(guān)鍵字,它將包圍的語(yǔ)句塊標(biāo)記為臨界區(qū),這樣一次只有一個(gè)線(xiàn)程進(jìn)入臨界區(qū)并執(zhí)行代碼,接下來(lái)通過(guò)本文給大家介紹C#中實(shí)現(xiàn)線(xiàn)程同步lock關(guān)鍵字的用法詳解,一起看看吧
    2016-07-07
  • C#鍵值對(duì)容器的介紹

    C#鍵值對(duì)容器的介紹

    C#鍵值對(duì)容器的介紹,需要的朋友可以參考一下
    2013-05-05
  • C#中關(guān)于double.ToString()的用法

    C#中關(guān)于double.ToString()的用法

    這篇文章主要介紹了C#中關(guān)于double.ToString()的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • C#自定義日志記錄

    C#自定義日志記錄

    這篇文章主要為大家詳細(xì)介紹了C#自定義日志記錄的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • C#中深拷貝和淺拷貝的介紹與用法

    C#中深拷貝和淺拷貝的介紹與用法

    本文詳細(xì)講解了C#中深拷貝和淺拷貝的介紹與用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 淺析C#的復(fù)制和克隆

    淺析C#的復(fù)制和克隆

    這篇文章主要介紹了淺析C#的復(fù)制和克隆,需要的朋友可以參考下
    2014-07-07
  • C#異常處理知識(shí)匯總

    C#異常處理知識(shí)匯總

    這篇文章主要介紹了C#異常處理的知識(shí),文中講解非常詳細(xì),配合代碼幫助大家更好的理解,感興趣的朋友可以參考下
    2020-06-06

最新評(píng)論