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

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

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

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

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

Canvas.RenderMode為Screen Space-Overlay

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

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;
 }
}

Canvas.RenderMode為Screen Space-Camera

利用RectTransformUtility.ScreenPointToLocalPointInRectangle換算出UI元素在Canvas的2D坐標:

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

public class UI_FollowObj : MonoBehaviour {
 [SerializeField]
 Camera UI_Camera;//UI相機
 [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;
  }
 }
}

效果如下:

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

相關(guān)文章

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

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

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

    C#多線程中如何運用互斥鎖Mutex

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

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

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

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

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

    C#鍵值對容器的介紹

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

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

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

    C#自定義日志記錄

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

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

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

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

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

    C#異常處理知識匯總

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

最新評論