2023年8月30日0
為了使用umg中的一些高階或便利特性,需要將製作好的slate控制項封裝到uwidget中去。
當前ue4版本4.8.3。
將slate封裝到umg中去有很多的好處,因為在**中對需要重用的控制項進行不斷的重新布局是一件非常繁瑣的事情。同時,umg也有在3d空間中進行顯示這樣的高階功能。
由於umg本身就是對slate的封裝,所以這個過程可以參照ue4的源**進行研究。
這裡所做的是嘗試對上一回所做的檔案目錄樹進行封裝。
直接上**
clistviewwidget.h
c++123
4567
891011
1213
1415
1617
1819
2021
2223
2425
2627
2829
#pragma once
#include "clistviewwidget.generated.h"
uclass()
classtest_mp_api uclistviewwidget:publicuwidget
;封裝類直接繼承自uwidget即可,剩下的就是對uwidget中的函式進行實現。
clistviewwidget.cpp
c++123
4567
891011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
3233
3435
3637
3839
4041
4243
4445
4647
4849
5051
5253
#include "test_mp.h"
#include "sddfiletree.h"
#include "clistviewwidget.h"
/** generated_uclass_body() */
uclistviewwidget::uclistviewwidget(constfobjectinitializer&objectinitializer)
:super(objectinitializer)
/** 《編輯器屬性 */
#if with_editor
// 《圖示
constfslatebrush*uclistviewwidget::geteditoricon()
// 《分類目錄
constftext uclistviewwidget::getpalettecategory()
// 《建立時的預設值
voiduclistviewwidget::oncreationfrompalette()
#endif
tsharedref<swidget>uclistviewwidget::rebuildwidget()
voiduclistviewwidget::onbindingchanged(constfname&property)
}在所有的函式中,rebuildwidget()是最重要的。
參看uwidget的源**可以發現,所有對被封裝的swidget的引用都是通過這個函式獲得的,因此在這裡面寫上swidget對應的構造生成就可以了。
onbindingchanged函式是用於屬性**通知的,這裡是簡單的封裝,沒有提供屬性**,因此直接return也是可以的。
在with_editor巨集中的是編輯器屬性,用於封裝後的uwidget在藍圖編輯器中顯示。具體每乙個函式的含義已經在注釋中了。
將clistviewwidget拖動到控制項藍圖上,並在hud中展示此控制項藍圖,就能在專案中與其他umg控制項一樣使用了:
這樣以來slate的使用就會變得方便很多。
從大神的部落格學解決方案
2018年4月14號 週六 晚 小雨 南京 csdn部落格 場景 使用者翻倍 問題 晚上做日結,規律性宕機 找原因 檢視jvm程序 日誌,根據機器效能 伺服器部署狀況,初步猜測問題所在 然後根據日誌 設計文件 找出根本原因。原因 檢視報表資料暫存於user session用陣列索引下標去翻頁,每次翻...
快排從右開始的原因
當我們把基準值設定在左邊時,為什麼要從右邊先開始找?乙個陣列為 6 1 2 7 9 3 4 5 10 8 先從右往左 前面幾輪查詢不貼了,到i j時與基準數進行交換,交換之後保證左邊的數都小於基準值右邊的數都大於基準值 從左往右 從有問題開始 i繼續前行當i j時此時值為9,但是條件限制j不能繼續前...
從狀態模式看「大神」和「菜鳥」的差別
大話設計模式 中講狀態模式這一節名字叫做 無盡加班何時休 狀態模式 菜鳥因為程式設計經驗不足,解決這個問題的能力不夠而不得不犧牲時間去不斷的寫 結果還是重複出錯。而大神每次都能深入到問題的根源運用自己的思想去寫 每乙個問題都完美的解決。加班的菜鳥一天各個時間段狀態都不一樣。從開始的精神百倍到越來越疲...