這里一共有三部分
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序設(shè)計(jì)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了屏邊免費(fèi)建站歡迎大家使用!提一下,因?yàn)橛锌?/p>
接下來用 C++ 偽代碼表示 藍(lán)圖代碼
一種常見情形,就是我基類BP_A
綁定了 Lua 去覆寫邏輯,然后藍(lán)圖類派生了其他類,比如 DataOnly 藍(lán)圖只配置數(shù)據(jù)不寫邏輯,最后場(chǎng)景里只扔了派生類BP_C
實(shí)例
這里有一點(diǎn)切記
有一點(diǎn)需要注意,BP_C和BP_B的GetModuleName不能有實(shí)現(xiàn),不然modulename就會(huì)變成“長度為0”的字符串了,那肯定不會(huì)調(diào)到
class BP_A : UnLuaInterface {GetModuleName =>"BP_A"; }
class BP_B : BP_A {GetModuleName =>""; } // 派生,沒綁Lua
class BP_C_DataOnly : BP_B {GetModuleName =>""; } // 派生,沒綁Lua
UE5 里 在 BP_C 里雙擊 GetModuleName 就會(huì)實(shí)現(xiàn) GetModuleName
然后變成這樣,藍(lán)圖會(huì)有 * ,代表修改了,非常坑爹
Lua 繼承也提一下,但是純Lua 的 OOP 實(shí)現(xiàn)是一個(gè)經(jīng)典問題,在此不再復(fù)述
如果 BP_B 也要用 Lua 覆寫,那么 Lua 里也要繼承一下
有一個(gè)關(guān)鍵理解,就是 UnLua 并不是給所有 UClass 都找到對(duì)應(yīng)的 Lua Class 去綁定,也不是 Lua Class 構(gòu)造一個(gè) UClass 去繼承被覆寫的藍(lán)圖類的 UClass,而是:
self
// BindObject,每個(gè) Object 綁定一次,銷毀 UObject 時(shí)銷毀 LuaObject,不銷毀 UClass如果不希望 BP_B 綁定 Lua,步驟2 會(huì)返回 “BP_A.lua”
如果希望 BP_B 綁定 Lua,步驟2 會(huì)返回 “BP_B.lua”,而 BP_B LuaClass 在 Lua 中繼承了 BP_A LuaClass
---@class BP_A
local M = UnLua.Class()
-- ...
---@class BP_B
local M = UnLua.Class("BP_A")
-- ...
代碼實(shí)例ALS_Base_CharacterBP_C
基類ALS_AnimMan_CharacterBP_C
派生類---@type ALS_AnimMan_CharacterBP_C
local M = UnLua.Class("Game.AdvancedLocomotionV4.Blueprints.CharacterLogic.ALS_Base_CharacterBP") -- 繼承 Lua 基類
function M:GetRollAnimation()
print("GetRollAnimation")
self.Super.GetRollAnimation(self) -- 只會(huì)調(diào)用 Lua 基類實(shí)現(xiàn),Lua 基類沒有實(shí)現(xiàn) 則 self.Super.GetRollAnimation is nil
self.Overridden.GetRollAnimation(self) -- 調(diào)用 派生類藍(lán)圖實(shí)現(xiàn),Lua實(shí)現(xiàn) 覆寫了 藍(lán)圖實(shí)現(xiàn),藍(lán)圖的函數(shù)指針存在 self.Overridden 里
local ReturnValue
ReturnValue = nil
return ReturnValue
end
return M
---@type ALS_Base_CharacterBP_C
local M = UnLua.Class()
function M:GetRollAnimation()
print("GetRollAnimation")
-- 基類 沒有 Super
self.Overridden.GetRollAnimation(self) -- 派生類實(shí)例,Lua 基類里 self.Overridden 還是會(huì)調(diào)用 派生類藍(lán)圖 實(shí)現(xiàn),不符合用意,這么用是錯(cuò)的
local ReturnValue
ReturnValue = nil
return ReturnValue
end
return M
結(jié)論你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
當(dāng)前文章:【UnLua】Super繼承和override-創(chuàng)新互聯(lián)
網(wǎng)站地址:http://jinyejixie.com/article32/depgsc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)、電子商務(wù)、Google、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容