從 Unity 官方範例 Bootcamp,可以看到一個圓形的雷達 UI,會依照人物的移動改變這個 UI 的內容,圓形地圖週邊有點淡淡的半透明往外淡出,這樣的小地圖就比單純矩形的子畫面小地圖要漂亮多了,那麼這種地圖該如何做呢?解析這個範例之後,得到的結論,必須先做一些準備:
- 一張完整的小地圖圖片。
- 做為地圖遮罩用的模型。
- 做為遮罩用的Shader。
- 裝飾小地圖週邊的圖片。
首先,我們需要自行製作一個簡單的 Shader,在 Project view 使用 Create 選單建立 Shader,並開啟它將內容改為以下的代碼:
Shader "Custom/MaskMap" {
SubShader {
ColorMask A
Pass{
}
}
}
SubShader {
ColorMask A
Pass{
}
}
}
接下來就開始製作雷達小地圖:
- 從選單列的 GameObject > Create Other > Quad (或 Plane)建立一個簡單的平面,將含有小地圖 Texture 的 Material 賦予給它,這個 Material 的 Shader 建議使用 Unlit/Transparent,最後將該 GameObject 命名為 SmallMap。
- 自行製作中間簍空的平面模型並拉至場景,擺放於 SmallMap 的前面,並建立 Shader 為 Custom/MaskMap 的 Material 賦予給它,最後將它的 GameObject 命名為 Occluder。
從 Scene view 就可以看到 SmallMap 被 Occluder 遮擋。 |
- 與 SmallMap 相同建立一個簡單的平面,將含有地圖外框圖 Texture 的 Material 賦予給它,這個 Material 的 Shader 同樣建議使用 Unlit/Transparent,並將其擺放至 Occluder 之前,最後為該 GameObject 命名為 SmallMapOutline。
SmallMapOutline 放在 SmallMap 及 Occluder 前面。 |
- 選取 SmallMap、Occluder、SmallMapOutline 三個 GameObject,並將它們的 Layer 設置為 UI。
把 Layer 設置為 UI。 |
- 選取場景中的 Main Camera 並在 Inspector view 將 Camera component 的 Culling Mask 欄位中的 UI 選項取消勾選。
使 Main Camera 的 Culling Mask 欄位不選取 UI。 |
- 從選單列的 GameObject > Create Other > Camera 建立第二個鏡頭並為其命名為 SmallMapCamera,將 SmallMapCamera 放置於 SmallMapOutline 之前並轉向面對 SmallMap、Occluder、SmallMapOutline 三個 GameObject,接下來將 SmallMapCamera 的 Camera component 中的 Clear Flags 欄位設置為 Depth only,Culling Mask 欄位只勾選 UI,Projection 欄位改為 Orthographic,Depth 欄位設置為大於 Main Camera 的 Depth 欄位值。
SmallMapCamera 放在最前面並面向三個 GameObject。 |
設置好 ClearFlages、Culling Mask、Projection、Depth 欄位。 |
在 Game view 看到完成的雷達小地圖。 |
P.S. 使用 Unity 版本為 4.5.5f1。