日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UE4中UnLua基础

發布時間:2025/3/15 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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中Plugins目錄放置在UE4項目的根目錄下。
  • 將UnLua.lua腳本放置Content/Script目錄下。
  • 重啟UE工程。
  • UnLua初探

    步驟:

  • 編寫HelloWorld.lua并放置在對應目錄下。
  • 在UE4中創建普通藍圖A。
  • 將藍圖與lua腳本關聯。
  • 將普通藍圖A和關卡藍圖關聯。
  • 或者:

  • 編寫HelloWorld.lua并放置在對應目錄下。
  • 在UE4中編輯關卡藍圖。
  • 將關卡藍圖與lua腳本關聯。
  • 編寫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

    創建藍圖并關聯

  • 任意創建一個藍圖A,打開藍圖A的類設置。在面板Details -> Interfaces -> Add添加一個UnLuaInterface接口。
  • 雙擊在MyBlueprint面板中的Interfaces -> Get Module Name,將Reture Node節點中的Reture Value的內容修改為HelloWorld。
  • Lua腳本放在Content/Script的子目錄下

    若HelloWorld.lua腳本放在Content/Script子目錄下。例如:Content/Script/subTreeDir目錄下,需要修改的是將藍圖中Reture Value內容改為subTreeDir.HelloWorld。

    關聯關卡藍圖和普通藍圖A

  • 在編輯器中打開關卡藍圖。
  • 創建Construct節點,并將其節點的類改為藍圖A。
  • 將關卡藍圖的EventBeginPlay連接到ConstructA。
  • 無需普通藍圖A,直接與關卡藍圖綁定

  • 打開關卡藍圖的類設置。在面板Details -> Interfaces -> Add添加一個UnLuaInterface接口。
  • 雙擊在MyBlueprint面板中的Interfaces -> Get Module Name,將Reture Node節點中的Reture Value的內容修改為HelloWorld。
  • 結束

    打開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腳本

  • 打開關卡藍圖的類設置。在面板Details -> Interfaces -> Add添加一個UnLuaInterface接口。
  • 雙擊在MyBlueprint面板中的Interfaces -> Get Module Name,將Reture Node節點中的Reture Value的內容修改為InitializeTest.Module。
  • 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

    關聯藍圖


    運行結果

  • BeginPlay、Tick、EndPlay方法都被覆蓋。
  • CustomEvent沒有被覆蓋。
  • 總結

    以上是生活随笔為你收集整理的UE4中UnLua基础的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。