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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UE4中UnLua基础

發(fā)布時(shí)間:2025/3/15 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UE4中UnLua基础 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

UnLua基礎(chǔ)

  • 簡介
  • 快速開始
    • 安裝
    • UnLua初探
      • 編寫HelloWorld.lua
      • 創(chuàng)建藍(lán)圖并關(guān)聯(lián)
      • Lua腳本放在Content/Script的子目錄下
      • 關(guān)聯(lián)關(guān)卡藍(lán)圖和普通藍(lán)圖A
      • 無需普通藍(lán)圖A,直接與關(guān)卡藍(lán)圖綁定
      • 結(jié)束
  • UnLua中的Initialize方法
    • 描述
    • 實(shí)例
      • 創(chuàng)建Module.lua
      • 關(guān)卡藍(lán)圖關(guān)聯(lián)InitializeTest.lua腳本
  • UnLua中覆蓋藍(lán)圖事件
    • 描述
    • 注意點(diǎn)
    • 創(chuàng)建Module.lua
    • 關(guān)聯(lián)藍(lán)圖
    • 運(yùn)行結(jié)果

簡介

UnLua是適用于UE的一個(gè)高度優(yōu)化的Lua腳本解決方案,由Tencent提供。詳細(xì)可以看github中readme文檔。

快速開始

安裝

  • 將UnLua中Plugins目錄放置在UE4項(xiàng)目的根目錄下。
  • 將UnLua.lua腳本放置Content/Script目錄下。
  • 重啟UE工程。
  • UnLua初探

    步驟:

  • 編寫HelloWorld.lua并放置在對應(yīng)目錄下。
  • 在UE4中創(chuàng)建普通藍(lán)圖A。
  • 將藍(lán)圖與lua腳本關(guān)聯(lián)。
  • 將普通藍(lán)圖A和關(guān)卡藍(lán)圖關(guān)聯(lián)。
  • 或者:

  • 編寫HelloWorld.lua并放置在對應(yīng)目錄下。
  • 在UE4中編輯關(guān)卡藍(lán)圖。
  • 將關(guān)卡藍(lán)圖與lua腳本關(guān)聯(lián)。
  • 編寫HelloWorld.lua

    創(chuàng)建HelloWorld.lua腳本,并將其放置工程中的Content/Scrpit或者Content/Scrpit/subTreeDir目錄下。

    HelloWorld.Lua腳本如下

    -- 加載UnLua腳本, 必需* require "UnLua"-- 創(chuàng)建HelloWorld_C類 local HelloWorld_C = Class()-- 初始化時(shí)執(zhí)行function HelloWorld_C:Initialize()print("所有綁定到Lua的對象初始化時(shí)都會(huì)調(diào)用Initialize的實(shí)例方法")end return HelloWorld_C

    以下是UnLua創(chuàng)建出來的模板腳本:Template.lua,其各個(gè)函數(shù)后續(xù)會(huì)講到。

    -- -- 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

    創(chuàng)建藍(lán)圖并關(guān)聯(lián)

  • 任意創(chuàng)建一個(gè)藍(lán)圖A,打開藍(lán)圖A的類設(shè)置。在面板Details -> Interfaces -> Add添加一個(gè)UnLuaInterface接口。
  • 雙擊在MyBlueprint面板中的Interfaces -> Get Module Name,將Reture Node節(jié)點(diǎn)中的Reture Value的內(nèi)容修改為HelloWorld。
  • Lua腳本放在Content/Script的子目錄下

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

    關(guān)聯(lián)關(guān)卡藍(lán)圖和普通藍(lán)圖A

  • 在編輯器中打開關(guān)卡藍(lán)圖。
  • 創(chuàng)建Construct節(jié)點(diǎn),并將其節(jié)點(diǎn)的類改為藍(lán)圖A。
  • 將關(guān)卡藍(lán)圖的EventBeginPlay連接到ConstructA。
  • 無需普通藍(lán)圖A,直接與關(guān)卡藍(lán)圖綁定

  • 打開關(guān)卡藍(lán)圖的類設(shè)置。在面板Details -> Interfaces -> Add添加一個(gè)UnLuaInterface接口。
  • 雙擊在MyBlueprint面板中的Interfaces -> Get Module Name,將Reture Node節(jié)點(diǎn)中的Reture Value的內(nèi)容修改為HelloWorld。
  • 結(jié)束

    打開Window -> Developer Tools -> Output log窗口,并且運(yùn)行游戲;即可在控制臺(tái)中看到所有綁定到Lua的對象初始化時(shí)都會(huì)調(diào)用Initialize的實(shí)例方法的輸出內(nèi)容。

    UnLua中的Initialize方法

    描述

    所有綁定到Lua的對象初始化時(shí)都會(huì)調(diào)用Initialize的實(shí)例方法。

    實(shí)例

    創(chuàng)建Module.lua

    InitializeTest/Module.lua腳本如下

    require "UnLua"local Module = Class()-- 所有綁定到Lua的對象初始化時(shí)都會(huì)調(diào)用Initialize的實(shí)例方法 function Module:Initialize()local msg = [[InitializeTest exce Initialize function.]]print(msg) endreturn Module

    關(guān)卡藍(lán)圖關(guān)聯(lián)InitializeTest.lua腳本

  • 打開關(guān)卡藍(lán)圖的類設(shè)置。在面板Details -> Interfaces -> Add添加一個(gè)UnLuaInterface接口。
  • 雙擊在MyBlueprint面板中的Interfaces -> Get Module Name,將Reture Node節(jié)點(diǎn)中的Reture Value的內(nèi)容修改為InitializeTest.Module。
  • UnLua中覆蓋藍(lán)圖事件

    描述

    覆蓋藍(lán)圖事件時(shí),只需要在返回的table中聲明Receive{EventName}。

    注意點(diǎn)

    關(guān)卡藍(lán)圖、Object藍(lán)圖、Actor藍(lán)圖、Character藍(lán)圖的Event是不一樣的。例如關(guān)卡沒有Actor的部分事件。

    該規(guī)則不適用于CustomEvent。TODO

    創(chuàng)建Module.lua

    OverrideBlurprintEvents/Module.lua腳本如下

    require "UnLua"local Module = Class()function Module:ReceiveBeginPlay()print("覆蓋藍(lán)圖的BeginPlay事件.") endfunction Module:ReceiveTick(DeltaSeconds)print("覆蓋藍(lán)圖的Tick事件.") endfunction Module:ReceiveEndPlay()print("覆蓋藍(lán)圖的EndPlay事件.") endfunction Module:ReceiveCustomEvent()print("覆蓋藍(lán)圖的CustomEvent事件.") endreturn Module

    關(guān)聯(lián)藍(lán)圖


    運(yùn)行結(jié)果

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

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。