【UE教程/進階】Slate鏈式編輯原理

目錄

  • 鏈式編輯
    • 操作" . "
    • 操作" + "
    • 操作" [ ] "


鏈式編輯

在這里插入圖片描述

  • SNew()
  • .
  • +
  • []

操作" . "

  • SLATE_ARGUMENT(ArgType, ArgName) 宏

    • 調用宏 SLATE_PRIVATE_ARGUMENT_VARIABLE(ArgType, ArgName) ,在FArgument結構體中添加了變量 ArgType _ArgName。
      在這里插入圖片描述
    • 調用宏SLATE_PRIVATE_ARGUMENT_FUNCTION(ArgType, ArgName),在FArgument結構體中添加了函數FArgument& ArgName(ArgType InArg),函數中將InArg賦值給_ArgName,并返回FArgument
      在這里插入圖片描述
  • SLATE_ATTRIBUTE(ArgType, ArgName)宏

    • 調用宏SLATE_PRIVATE_ATTRIBUTE_VARIABLEAttrType, AttrName),在FArgument結構體中添加了變量TAttribute _AttrName,TAttribute<>類型由兩個部分構成:Value、Getter
      • Value:儲存對應AttrType類型變量的值。
      • Getter:綁定一個外部函數。當Getter沒有綁定任何函數時,可以將Attribute當作一個純變量來使用;當Getter綁定外部函數時,會每幀調用Getter綁定的函數來更新Value值。
        在這里插入圖片描述
    • 調用宏SLATE_PRIVATE_ATTRIBUTE_FUNCTION(AttrType, AttrName),在FArgument結構體中添加了函數 FArgument& AttrName(TAttribute InAttribute),函數中將InTAttribute賦值給_AttrName,并返回FArgument
      在這里插入圖片描述
    • 也可以使用 TSlateAttribute ,TSlateAttribute的性能更加優秀
  • SLATE_EVENT(DelegateName, EventName)宏

    • 在FArgument結構體中添加了變量DelegateName _EventName
      在這里插入圖片描述

    • 在FArgument結構體中添加了函數FArgument EventName(DelegateName& InDelegate),在這個函數中將InDelegate賦值給_EventName,并且返回FArgument
      在這里插入圖片描述

那么,使用 .參數名(參數) ,其實就是調用了FArgument中的同名函數,設置了相應屬性的值,并且這個函數仍會返回FArgument,可以鏈式調用


操作" + "

  • SLATE_SLOT_ARGUMENT(SlotType, SlotName)宏
    • 向FArgument結構體中添加了TArray數組_SlotName。
    • 在 Construct() 函數中,會取出_SlotName數組中的Slot,將其添加到子控件數組中。
    • 在 OnPaint() 函數中,對子控件中的Slot進行處理。
    • 重載+運算符FArgument& + (typename SlotType::FSlotArgument& SlotToAdd),這個函數中將SlotToAdd添加到_SlotName數組中,并返回FArgument
      在這里插入圖片描述

那么,使用+,其實就是調用了重載的+運算符,將需要的Slot添加進Slate的_SlotName數組中,并且這個函數會返回FArgument,就可以鏈式調用。


操作" [ ] "

  • SLATE_DEFAULT_SLOT(DeclarationType, SlotName)宏
    • 調用SLATE_NAMED_SLOT(DeclarationType, SlotName)宏,向FArgument結構體中添加了結構體TAlwaysValidWidget _SlotName
      在這里插入圖片描述
    • TAlwaysValidWidget結構體中有一個指針SWidget* Widget,并且該指針一直有效,默認為SNullWidge。
    • 向FArgument結構體中添加了函數 NamedSlotProperty SlotName(),這個函數返回_SlotName結構體
    • 重載[]運算符DeclarationType& [] (TSharedRef& InChild),這個函數將InChild賦值給Widget,并且返回DeclarationType,若DeclarationType是TArgument則實現鏈式調用。
      在這里插入圖片描述

那么,使用[ SNew(…)… ],其實就是調用了重載的[]運算符,將其中的Slate表達式傳遞給_SlotName結構體中的Widget,并且返回TArgument,實現鏈式調用。


正春華枝俏,待秋實果茂,愿與君共勉

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/88485.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/88485.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/88485.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

將手工建模模型(fbx、obj)轉換為3dtiles的免費工具!

文章目錄1、工具下載2、使用說明3、詳細說明命令行格式示例命令參數說明4、源碼地址1、工具下載 百度網盤下載鏈接 選擇最新版本下載即可&#xff0c;支持Linux和Windows系統 2、使用說明 1&#xff09;按住鍵盤winr鍵&#xff0c;在彈出的窗口中輸入cmd 2&#xff09;點擊…

FreeRTOS源碼學習之內核初始化

目錄 前言 一、主函數內容 二、osKernelInitialize ()內核初始化函數內容 三、IS_IRQ()宏定義中斷檢測函數內容 四、如果這篇文章能幫助到你&#xff0c;請點個贊鼓勵一下吧ξ( ?&#xff1e;??)~ 前言 使用STM32CubeMX添加FreeRTOS進入工程之后&#xff0c;會自動在ma…

Docker—— 鏡像構建原因

在現代軟件開發和運維中&#xff0c;Docker已成為一種非常流行的工具&#xff0c;它通過容器化應用程序來簡化部署過程。然而&#xff0c;默認的官方鏡像往往只能滿足基礎需求&#xff0c;無法涵蓋所有特定項目的具體要求。原因說明系統級改動無法通過 volume 實現修改用戶、刪…

鋰電池自動化生產線的現狀與發展

鋰電池自動化生產線的概述鋰電池自動化生產線是指采用自動化設備和控制系統&#xff0c;實現鋰電池從原材料到成品的全流程自動化生產過程。隨著新能源產業的快速發展&#xff0c;鋰電池作為重要的儲能元件&#xff0c;其生產制造技術也在不斷進步。自動化生產線通過減少人工干…

java底層的native和沙箱安全機制

沙箱安全機制沙箱&#xff08;Sandbox&#xff09;安全機制是一種將程序或代碼運行在隔離環境中的安全技術&#xff0c;旨在限制其對系統資源&#xff08;如文件系統、網絡、內存、其他進程等&#xff09;的訪問權限&#xff0c;從而降低潛在惡意代碼帶來的風險。其核心思想是“…

【分享】文件擺渡系統適配醫療場景:安全與效率兼得

根據國家信息安全相關法規要求&#xff0c;醫院為了網絡安全&#xff0c;大多會采用網閘等隔離手段&#xff0c;將網絡隔離為內網和外網&#xff0c;但網絡隔離后&#xff0c;醫院的內外網間仍存在較為頻繁的文件擺渡需求。文件擺渡系統則是可以解決跨網絡或跨安全域文件傳輸中…

vscode 中的 mermaid

一、安裝軟件 Mermaid preview Mermaid support 二、運行命令 創建.md 文件右鍵選擇 ?Open Preview?&#xff08;或按 CtrlShiftV&#xff09; 三、流程圖 注意&#xff1a; 要md 文件要保留 mermaid 1. #mermaid-svg-nchqbvlWePe5KCwJ {font-family:"trebuchet ms"…

微服務引擎 MSE 及云原生 API 網關 2025 年 6 月產品動態

點擊此處&#xff0c;了解微服務引擎 MSE 產品詳情。

【TCP/IP】7. IP 路由

7. IP 路由7. IP 路由概述7.1 直接傳遞與間接傳遞7.2 IP 路由核心機制7.3 路由表7.3.1 路由表的構成7.3.2 信宿地址采用網絡地址的好處7.3.3 下一跳地址的優勢7.3.4 特殊路由表項7.3.5 路由算法7.4 靜態路由7.4.1 特點7.4.2 自治系統&#xff08;AS&#xff09;7.4.3 配置命令7…

xFile:高性能虛擬分布式加密存儲系統——Go

xFile&#xff1a;高性能虛擬分布式加密存儲系統 目錄xFile&#xff1a;高性能虛擬分布式加密存儲系統1 背景介紹2 設計初衷與目標3 項目簡介4 系統架構5 核心優勢1. 真正的分布式塊存儲2. 塊級加密與壓縮&#xff0c;安全高效3. 靈活的索引與元數據管理4. 多用戶與權限體系5. …

時序數據庫:高效處理時間序列數據的核心技術

時序數據庫概述時序數據庫&#xff08;Time Series Database&#xff0c;TSDB&#xff09;是一種專門為存儲、處理和查詢時間序列數據而優化的數據庫系統。隨著物聯網、金融科技、工業互聯網等領域的快速發展&#xff0c;時序數據呈現出爆炸式增長&#xff0c;傳統的關系型數據…

面試官:你再問TCP三次握手,我就要報警了!

CP三次握手和四次揮手&#xff0c;是面試官最愛問的“開場白”之一 別看它基礎&#xff0c;真要講清楚細節&#xff0c;分分鐘讓你冷汗直流&#xff01; 這玩意兒就跟程序員相親一樣&#xff1a; 表面上問的是“你老家哪的” 實際上是在試探你有沒有房、有沒有車、能不能落…

RuoYi+Uniapp(uni-ui)開發商城系統

如果你正在考慮用 RuoYi 和 UniApp&#xff08;uni-ui&#xff09;搭建一套商城系統&#xff0c;那這套組合確實值得好好研究。它整合了 RuoYi 的快速開發能力和 UniApp 的跨平臺特性&#xff0c;在高效開發的同時還能兼顧多端適配的需求。下面從技術架構、功能模塊、開發實踐到…

面試150 二叉樹的最大高度

思路 考慮從遞歸出發&#xff0c;聯想遞歸三部曲&#xff1a;返回什么、傳入的參數是什么、遍歷的方式是什么。此題現在需要我們整個樹&#xff0c;并且需要從根節點出發&#xff0c;因此我們選擇先序遍歷即可。另一張辦法&#xff0c;則是選擇通過隊列實現層次遍歷&#xff0c…

從零實現一個GPT 【React + Express】--- 【2】實現對話流和停止生成

摘要 這是本系列文章的第二篇&#xff0c;開始之前我們先回顧一下上一篇文章的內容&#xff1a; 從零實現一個GPT 【React Express】— 【1】初始化前后端項目&#xff0c;實現模型接入SSE 在這一篇中&#xff0c;我們主要創建了前端工程和后端工程&#xff0c;這里貼一下我…

SEQUENCE在RAC多實例開啟CACHE的NEXTVAL數值亂序問題

問題說明 在多實例環境中可能會出現從Sequence所取出來的nextval是亂序的&#xff0c;比如第二次比第一次所取的數要小但這并不是我們所希望的。當程序邏輯Base on sequence.nextval數值所謂填充字段的大小來排序時&#xff0c;就會產生問題。 實際上就是由于多實例這一特性造成…

后臺管理系統-權限管理

在后臺管理系統當中&#xff0c;權限管理占著非常重要的位置&#xff0c;權限管理&#xff0c;顧名思義&#xff0c;就是用來管理用戶登錄后臺的權限。 在權限管理中有三個重要的名詞&#xff1a;賬號&#xff0c;角色&#xff0c;權限 賬號&#xff1a;通過賬號進入平臺&…

MySQL表的約束(5)

文章目錄前言一、空屬性二、默認值三、列描述四、zerofill五、主鍵六、自增長七、唯一鍵八、外鍵總結前言 真正約束字段的是數據類型&#xff0c;但是數據類型約束很單一&#xff0c;需要有一些額外的約束&#xff0c;更好的保證數據的合法性&#xff0c;從業務邏輯角度保證數據…

MyBatis:SQL與Java的智能橋梁

MyBatis&#xff1a;SQL 與 Java 的「智能翻譯官」 —— 用 極簡的方式 連接數據庫和 Java 對象&#xff0c;告別 JDBC 的繁瑣操作&#xff01;核心定位&#xff1a;半自動化 ORM 框架對比項JDBC 原生操作MyBatis 解決方案SQL 編寫拼字符串&#xff08;易出錯、難維護&#xff…

自動駕駛控制系統

目錄 控制系統概述 無人車控制架構設計 自動駕駛控制核心技術 車輛縱向控制 車輛橫向控制 自動駕駛控制方法 自動駕駛控制技術方案 人機交互系統 控制系統概述 控制技術是智能駕駛的關鍵,旨在環境感知技術的基礎之上,根據決策規劃出目標軌跡,通過縱向和橫向控制系統…