UE4中UnLua基础
UnLua基礎
- 簡介
 - 快速開始
 - 安裝
 - UnLua初探
 - 編寫HelloWorld.lua
 - 創建藍圖并關聯
 - Lua腳本放在Content/Script的子目錄下
 - 關聯關卡藍圖和普通藍圖A
 - 無需普通藍圖A,直接與關卡藍圖綁定
 - 結束
 
- UnLua中的Initialize方法
 - 描述
 - 實例
 - 創建Module.lua
 - 關卡藍圖關聯InitializeTest.lua腳本
 
- UnLua中覆蓋藍圖事件
 - 描述
 - 注意點
 - 創建Module.lua
 - 關聯藍圖
 - 運行結果
 
簡介
UnLua是適用于UE的一個高度優化的Lua腳本解決方案,由Tencent提供。詳細可以看github中readme文檔。
快速開始
安裝
UnLua初探
步驟:
或者:
編寫HelloWorld.lua
創建HelloWorld.lua腳本,并將其放置工程中的Content/Scrpit或者Content/Scrpit/subTreeDir目錄下。
HelloWorld.Lua腳本如下
-- 加載UnLua腳本, 必需* require "UnLua"-- 創建HelloWorld_C類 local HelloWorld_C = Class()-- 初始化時執行function HelloWorld_C:Initialize()print("所有綁定到Lua的對象初始化時都會調用Initialize的實例方法")end return HelloWorld_C以下是UnLua創建出來的模板腳本:Template.lua,其各個函數后續會講到。
-- -- DESCRIPTION -- -- @COMPANY ** -- @AUTHOR ** -- @DATE ${date} ${time} --require "UnLua"local Template_C = Class()--function Template_C:Initialize(Initializer) --end--function Template_C:UserConstructionScript() --end--function Template_C:ReceiveBeginPlay() --end--function Template_C:ReceiveEndPlay() --end-- function Template_C:ReceiveTick(DeltaSeconds) -- end--function Template_C:ReceiveAnyDamage(Damage, DamageType, InstigatedBy, DamageCauser) --end--function Template_C:ReceiveActorBeginOverlap(OtherActor) --end--function Template_C:ReceiveActorEndOverlap(OtherActor) --endreturn Template_C創建藍圖并關聯
Lua腳本放在Content/Script的子目錄下
若HelloWorld.lua腳本放在Content/Script子目錄下。例如:Content/Script/subTreeDir目錄下,需要修改的是將藍圖中Reture Value內容改為subTreeDir.HelloWorld。
 
 
關聯關卡藍圖和普通藍圖A
無需普通藍圖A,直接與關卡藍圖綁定
結束
打開Window -> Developer Tools -> Output log窗口,并且運行游戲;即可在控制臺中看到所有綁定到Lua的對象初始化時都會調用Initialize的實例方法的輸出內容。
UnLua中的Initialize方法
描述
所有綁定到Lua的對象初始化時都會調用Initialize的實例方法。
實例
創建Module.lua
InitializeTest/Module.lua腳本如下
require "UnLua"local Module = Class()-- 所有綁定到Lua的對象初始化時都會調用Initialize的實例方法 function Module:Initialize()local msg = [[InitializeTest exce Initialize function.]]print(msg) endreturn Module關卡藍圖關聯InitializeTest.lua腳本
UnLua中覆蓋藍圖事件
描述
覆蓋藍圖事件時,只需要在返回的table中聲明Receive{EventName}。
注意點
關卡藍圖、Object藍圖、Actor藍圖、Character藍圖的Event是不一樣的。例如關卡沒有Actor的部分事件。
該規則不適用于CustomEvent。TODO
創建Module.lua
OverrideBlurprintEvents/Module.lua腳本如下
require "UnLua"local Module = Class()function Module:ReceiveBeginPlay()print("覆蓋藍圖的BeginPlay事件.") endfunction Module:ReceiveTick(DeltaSeconds)print("覆蓋藍圖的Tick事件.") endfunction Module:ReceiveEndPlay()print("覆蓋藍圖的EndPlay事件.") endfunction Module:ReceiveCustomEvent()print("覆蓋藍圖的CustomEvent事件.") endreturn Module關聯藍圖
 
運行結果
總結
以上是生活随笔為你收集整理的UE4中UnLua基础的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: UE4 + UnLua + VSCode
 - 下一篇: UE 比较好的文章