Unity3D 自定義公告牌

2021-01-12 Unity3D遊戲開發精華教程乾貨
前言

有時候我們希望公告牌跟隨鏡頭旋轉永遠平行面向屏幕,同時跟隨鏡頭縮放縮放大小不變(鏡頭遠離物體,正常物體視覺效果變小,但公告牌視覺大小比例不變),或者跟隨鏡頭縮放變化,本文記錄C#腳本的兩種實現方式

製作公告牌

創建一個UI的Canvas,將Render Mode模式改成World Space,然後把Canvas畫布拖進文件夾變成預製體

添加Image背景圖,再添加Text,Canvas畫布、Text文字寬度、高度都設置為0,公告牌的大小由Image來設置

再設置一下錨點等相關屬性

最後綁定上我們的控制腳本

就這樣,一個自定義公告牌就製作完成

方式一

如果鏡頭縮放鏡頭設置的是鏡頭的fieldOfView值

using UnityEngine;
public class Billboard : MonoBehaviour { Camera camera;
private float _fieldOfView;
void Start () { camera = Camera.main; _fieldOfView = camera.fieldOfView; } void Update () { transform.rotation = camera.transform.rotation; float fieldOfView = camera.fieldOfView; transform.localScale = new Vector3(fieldOfView/_fieldOfView,fieldOfView/_fieldOfView,fieldOfView/_fieldOfView); }
}

方式二

如果鏡頭縮放鏡頭設置的鏡頭的位置

using UnityEngine;
public class Billboard : MonoBehaviour { Camera camera;
private float _distance;
void Start () { camera = Camera.main; _distance = Vector3.Distance(camera.transform.position, transform.position); } void Update () { transform.rotation = camera.transform.rotation;
float distance = Vector3.Distance(camera.transform.position, transform.position); var scale = distance/_distance * 0.1F; transform.localScale = new Vector3(scale,scale,scale); } }

效果

以下效果是不跟隨縮放,如果想要跟隨縮放,腳本代碼注釋縮放部分即可

後記

自定義公告牌暫時先記錄到這,後續再進行補充

聲明:發布此文是出於傳遞更多知識以供交流學習之目的。若有來源標註錯誤或侵犯了您的合法權益,請作者持權屬證明與我們聯繫,我們將及時更正、刪除,謝謝。

作者:huanzi-qch

來源:http://www.cnblogs.com/huanzi-qch/p/12125265.html

More:【微信公眾號】 u3dnotes

相關焦點

  • Unity3D 尋路系統
    https://docs.unity3d.com/Manual/class-NavMeshAgent.html四、組件Nav Mesh Obstacle的使用http://docs.unity3d.com/Manual
  • 博主營地 | Unity3D 實用技巧 - 理論知識庫(一)
    區別:A.值類型存儲在內存棧中,引用類型數據存儲在內存堆中,而內存單元中存放的是堆中存放的地址;B.值類型存取快,引用類型存取慢;C.值類型表示實際數據,引用類型表示指向存儲在內存堆中的數據的指針和引用;D.棧的內存是自動釋放的,堆內存是.NET中會由GC來自動釋放;E.值類型繼承自System.ValueType,引用類型繼承自System.Object。
  • 2021新年匯總:Unity項目原型快速開發資源,看這一篇就夠
    /publishers/102  完整項目: 3D Game Kit : https://assetstore.unity.com/packages/templates/tutorials/3d-game-kit-115747
  • Unity 實用技巧 - 物理系統初識
    官方文檔:https://docs.unity3d.com/Manual/PhysicsSection.html01  Rigidbody(剛體)/ Rigidbody2D(2D剛體)在使用02  Colliders(碰撞器)Colliders組件為物理碰撞定義了一個物體的形狀。它不需要完全符合GO的網格形狀;事實上,大致相似在遊戲中更加有效率。
  • Unity約你來剁手啦!
    Unity Pro專業版促銷詳情:https://create.unity3d.com/big-fall-sale-cnUnity Plus加強版5折,折後價120元/月,不含稅。免費贈送價值300美金的2個資源工具包,內含多款實用Asset Store上實用資源插件。免費贈送1個Unity限量背包!
  • 【官方說明】Unity 5 引擎專業版和個人版解析
    下載:Unity 5 Personal Edition(個人版)和Professional Edition(專業版)今天可在 http://unity3d.com/cn/get-unity 立即下載。提問:如您有任何問題請在中文官方論壇中參與討論,或者聯繫:chinasales@unity3d.com
  • 三維CAD功能教程:強化材料屬性工具輕鬆自定義
    一、製作零件材料屬性從工具選項卡進入「零件屬性」選項,彈出零件屬性彈窗,如圖1所示,點擊材料庫圖標,彈出材料屬性彈窗,從文件/束中選擇材料或者自定義材料名稱和密度,並點擊確定,這樣即完成了零件材料屬性製作
  • unity實戰之大主宰
    然後回到unity,點擊windows ->package manager,就能找到自己的資源,全部import這裡是獲取場景後的結果:對於複雜的特殊組件,一般通過按鈕添加,如果想添加自定義的代碼,就是用:object.AddComponent(typeof(class_name))其結果相當於把class打包進入一個cs文件,並添加到對象裡,這個類必須繼承MonoBehaviour
  • Unity項目開發過程中常見的問題,你遇到過嗎?
    最近看到有朋友問一個unity遊戲開發團隊,需要掌握哪些知識之類的問題。
  • 【大咖專欄】Unity AR Foundation 平面檢測實戰
    下面的代碼自定義一個腳本組件用來查詢設備是否支持AR,注意Start函數的返回值修改為IEnumerator,以實現異步查詢。  參考資料  https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.1/manual/index.html
  • 使用Unity 粒子系統實現 2D 人物足跡效果
    之後深入一想腳本大概要怎麼寫,感覺頭大的不行,又想到了 Hierarchy 裡面被 FootStep12345678 塞得滿滿當當的壯麗場面..還是換個方法吧 轉念一想:unity 的粒子系統似乎可以滿足所有特性:生成淡出銷毀全自動,跟隨人物也是基本操作,比較存疑的就是用腳本控制粒子的鏡像與旋轉。
  • 簡化AR體驗創作,Unity MARS Query系統程序化生成場景的原理
    Unity MARS資料庫:  https://docs.unity3d.com/Packages/com.unity.mars@1.1/manual/MARSConcepts.html#the-mars-database  每條數據都以稱為數據ID(data ID)的一串數字做區分,每條數據又能包含任意數量的特徵(traits),即帶名稱的特定數據類型
  • Unity 最新版本迎來260項功能改進,高清渲染管線HDRP升級
    https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@8.0/manual/Feature-Comparison.html藝術家工具渲染管線若達到成品級,意味著它有各式工具來協助藝術家創作。
  • Unity編碼篇 Rigidbody類
    System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class bullet : MonoBehaviour{// 定義一個
  • 歌手XXXTentacion一周前身亡 單曲奪公告牌榜首
    據國外媒體報導,在一周之前遭槍擊意外身亡之後,說唱歌手XXXTentacion的多首歌曲的銷量和點播量都有了明顯提升,在本周的公告牌Hot 100單曲榜中,XXXTentacion一共有九首歌曲上榜,其中,他那首《Sad!》從上一周的第52名飆升到了本周榜首。
  • Unity2018新功能搶鮮 | 粒子系統改進
    粒子系統使用Procedural Instancing,可以在此處詳細解釋:https://docs.unity3d.com/Manual/GPUInstancing.html實例化支持已添加到「Particle Standard Shaders」中,並將在所有新內容中默認啟用。舊版內容升級到Unity 2018.1後,可以使用Renderer模塊中的複選框啟用GPU實例化。
  • 韓國兒歌《baby shark》連續兩周進入公告牌百強單曲榜
    韓國兒歌《鯊魚一家》的英文版《Baby Shark》已連續兩周衝進美國公告牌百強單曲排行榜的前四十名。1月15日(當地時間)據公告牌公開的最新榜單顯示,《Baby Shark》在公告牌百強單曲排行榜中排名第38位。
  • unity 半透明渲染技巧(3則)
    unity 半透明渲染技巧(1):固定深度法半透明渲染排序問題 長期在各種3d引擎存在,這裡將一些針對性技巧。
  • 四元數與3D旋轉實例! Cocos Creator 3D Quternion !
    (矩陣唯一,歐拉角有無數種)實例構造四元數四元數的定義這邊就不詳細說了,大概知道就是用四個數字去表達旋轉。那麼怎麼去構造這個四元數呢?我們從API入手去講解和理解。}/*** @zh 返回定義此四元數的坐標系 X 軸向量*/public static toAxisX (out: IVec3Like, q: IQuatLike) {    //...
  • TWICE新專輯《Eyes wide open》登上公告牌200強專輯榜
    12月17日消息,近日,根據美國公告牌最新榜單數據顯示,韓國女團TWICE新專輯《Eyes wide open》於本周,登上公告牌200強專輯榜位居第72位。TWICE專輯《Eyes wide open》除了進入了公告牌200強專輯榜外,還在世界專輯榜和專輯銷量榜位居不錯的排名,同時她們憑藉自身的優勢登上百大藝人榜排名為第73名。