UnityUI 工具 - MRTK3
UnityUI 可能不是第一個混合實境開發人員在建立 3D 使用者介面時所考慮的工具。 但是,使用一些協助程式元件和公用程式,就可以在 UnityUI 中建立美觀且彈性的 3D 使用者介面。
提示
撰寫 UnityUI 時,很容易就能建立效能瓶頸。 建立複雜的 UnityUI 配置之前,建議您先閱讀本 教學課程。
範例
如需針對 UnityUI 建置的各種元件示範,請參閱UnityUI範例。
UI 行為元件
下列元件有助於轉譯 UI,但看不到 圖形 元件。
ScaleMeshEffect
在 UnityUI 元件上 unity_ObjectToWorld
,矩陣 (或 UNITY_MATRIX_M
URP) 不是圖形元件所在的本機轉換矩陣,而是其父 Canvas 的轉換矩陣。 圖形工具內的許多著色器效果都需要知道物件縮放比例。 為了解決此問題, ScaleMeshEffect.cs 會在 UI 網格建構期間將縮放資訊儲存到 UV 通道屬性中。
提示
當需要 ScaleMeshEffect.cs 時,圖形工具內的Canvas 或 CanvasRenderer將會提示新增ScaleMeshEffect.cs。
RectMask2DFast
UnityUI 具有稱為 RectMask2D的內建元件。 此元件通常用來遮罩較大區域的小型區段。 遮罩許多物件時,此程式可能需要相當長的時間,才能將 CPU 上的物件擷取。 為避免此瓶頸,圖形工具組含 RectMask2DFast
元件。
RectMask2DFast
的運作方式 RectMask2D
與 和 相同,是建議的取代專案。 如果您在新增或移除物件 RectMask2DFast
之後遇到遮罩不會更新的問題,您可能需要手動叫用更新,如下所示:
myRectMask2DFast.ForceClip = true;
所有 圖形工具/畫布/ 著色器及 圖形工具/標準畫布 著色器都支援 RectMask2D
、 RectMask2DFast
和 RoundedRectMask2D
。
注意
圖形工具/畫布/著色器和圖形工具/標準畫布著色器不支援或 上的 RectMask2D
Softness屬性RectMask2DFast.
RoundedRectMask2D
RoundedRectMask2D
衍生自 RectMask2DFast
,並類似地運作。 唯一的差別在於 RoundedRectMask2D
包含圓角圓角的圓角半徑值。 您可以針對所有角落或每個角落個別選取此半徑。
注意
資料實例必須由使用者控制。 亦即共用資料可能會受到 RoundedRectMask2D
影響。
UI 圖形元件
下列 圖形 元件有助於將 3D 維度新增至 Canvas。
CanvasElementRoundedRect
此元件會以程式方式產生 3D 圓角矩形網格,然後指派給 Canvas 頂點資料流程。 此元件通常用來使用 圖形工具/畫布/背板 著色器來產生背板網格。
CanvasElementBeveledRect
就像 一樣 CanvasElementRoundedRect
,此元件會以程式方式產生 3D 圓角矩形,但具有斜面邊緣。 此元件通常用來使用 圖形工具/畫布/斜面 著色器來產生背板網格。
CanvasElementMesh
Unity 的 MeshRenderer 元件可用來在 UnityUI 內顯示 3D 網格,但不會遵守 UnityUI 提供的一些版面配置功能。 若要解決這些配置問題,有 CanvasElementMesh
元件。
元件 CanvasElementMesh
會接受輸入網格,並將其轉譯成 Graphic
元件。
重要
輸入網格必須啟用其 讀取/寫入 屬性,才能在腳本中讀取頂點。
動畫
若要以動畫顯示 UnityUI 材質屬性,您可以使用 CanvasMaterialAnimator... 類別。 如需詳細資訊,請參閱 動畫 檔。
功能表項目
為了協助 UI 版面配置,圖形工具中有少數功能表項目存在。
錨點到角落和錨點的角落
視窗 > 圖形工具 > 畫布錨點錨 > 點到角落 和 視窗 > 圖形工具 > 畫布錨 > 點角落到錨 點可讓您在釘選系統和 RectTransform中固有的錨點 (條件約束之間來回移動表示版面配置與錨) 點 (條件約束。 在回應式和固定縮放版面配置之間移動時,這非常有用。