UE4學習筆記 05

2021-10-24 22:05:16 字數 2269 閱讀 2520

小地圖案例

藍圖類材質

m_map主材質 :包含乙個地圖紋理、乙個漸變遮罩、三個引數(紋理、遮罩偏移、遮罩縮放)

mi_map01材質例項 :主材質的例項,便於使用和修改

貼圖t_map:場景頂檢視

t_minimaparrow01:箭頭圖示

t_minimapframeink01:小地圖邊框圖

場景及小地圖尺寸、位置相關變數

ui相關變數

1、小地圖ui畫素大小minimapuisize

2、小地圖ui外邊距畫素minimapuipadding

3、螢幕橫向和豎向大小resx和resy

材質相關變數

1、材質例項minimapmi

2、動態材質例項minimapdmi

還需建立actor引用、繪製箭頭/邊框圖、縮放功能相關變數等

draw texture繪製紋理

draw material繪製材質,節點中screen開頭變數為螢幕ui屬性,material開頭變數為紋理屬性

注意:材質繪製到hud需使用自發光emissive color而非底色base color

相較於繪製紋理,繪製材質後續可通過藍圖指令碼修改具有引數化屬性的材質例項實現遮罩、移動、縮放等功能

漸變遮罩:

radialgradientexponential指數徑向(放射狀)漸變

lineargradient線性漸變

帶放射狀漸變的靜態材質 ui繪製如下:

紋理、uv座標:

texture coordinate紋理座標節點,縮寫為texcoord

用二維座標(u,v)來表示紋理,其中u為橫座標從左到右,v為縱座標從上到下

uv大小一般情況為0~1,座標(0,0)對應紋理的左上角位置,座標(1,1)對應紋理的右下角位置

超出1的部分由定址模式決定紋理的對映:wrap重複平鋪、mirror映象、clamp剪裁

uv座標加減向量可以實現偏移,uv增加->紋理反向移動

uv座標乘除標量可以實現縮放,uv增加->紋理範圍變大,單位紋理縮小

材質中的資料節點可通過右鍵convert to parameter轉化為引數

向材質裡傳引數只允許一維、三維、四維

componentmask 阻斷向量的維度

1、建立具有引數化屬性的動態材質例項

create dynamic material instance建立動態材質例項

在hud藍圖類中通過藍圖指令碼實時修改材質例項改變小地圖的繪製結果,使其支援按比例顯示及跟隨角色定位

3、材質引數計算

主要是通過求出小地圖位置、大小之於場景的百分比,來修改相應材質引數控制遮罩以及紋理部分,實現顯示比例、跟隨角色定位及ui尺寸位置自定義

遮罩:maskoffset偏移引數 和 masktile縮放引數

紋理:material u/v座標 和 material uwidth/vheight寬高大小

set scalar parameter value設定標量引數,實現紋理比例縮放

set vector parameter value設定向量引數,實現紋理偏移

set texture parameter value設定紋理引數,實現紋理替換

4、位置尺寸

依次計算得出screen x/y和screen width/height即可

使用draw texture繪製小箭頭

需獲取player旋轉屬性航向角yaw傳入節點並作調整

在hud藍圖類中使用差值計算節點finterp to實時修改小地圖的size

並設定目標值sizetarget及目標值修改函式zoomin、zoomout

由鍵盤輸入事件觸發並呼叫相應函式更新縮放目標值實現小地圖縮放功能

draw texture 先於小地圖繪製,然後調整尺寸邊距使其和小地圖相匹配

UE4學習筆記 Gameplay Classes

增加類 編輯器中有乙個類嚮導,可以生成類所需要的檔案和基礎巨集 標頭檔案由於ue4對c 做了擴充套件,實現了如序列化反射等特性,跟qt的做法類似 在 中加入一些巨集關鍵字,在編譯期間生成相應的c 因此,對於每個類來說,都有會生成乙個classname.generated.h的檔案 類宣告uclass...

UE4學習筆記 Gameplay Classes

增加類 編輯器中有乙個類嚮導,可以生成類所需要的檔案和基礎巨集 標頭檔案由於ue4對c 做了擴充套件,實現了如序列化反射等特性,跟qt的做法類似 在 中加入一些巨集關鍵字,在編譯期間生成相應的c 因此,對於每個類來說,都有會生成乙個classname.generated.h的檔案 類宣告uclass...

UE4學習筆記 Replication

actors 客戶端複製actor被spawn出來時,只有location和rotation在prebeginplay 和postbeginplay 時是合法的 被複製的actor只有在伺服器關閉他們的複製通道時才被銷毀 actor的屬性複製是可靠的.只會從伺服器往客戶端同步 freplicatio...