ue4 命名插件_虚幻4 ULua插件入门讲解

4dc6bfe968a6069e8a23ffec816160ff.png

前期准备工作:

第一步下载插件

https://github.com/Tencent/UnLua

325c3dab59c39556d066549654db6d27.png

下载的内容包了ULua的范例,可以先跳过,等看完教程再去看。

第二步,新建C++项目,命名为TestLua并且将Lua插件复制到项目中

8605c241a0986a9141c42e5edf439f37.png

1f19343335aa2df37ff4ef18ab144d82.png

重新生成项目,然后打开TestLua.sln重新编译一下

新建TestLua蓝图,点击类设置添加UnLuaInterface接口

99e95b40d7db347f70470e569912b265.png

会多出一个接口函数,这个接口函数是用来规划Lua的脚本目录

2badb46468b2193e9a6cddfc753e0540.png

Lua中类的名称必须为PrefixCPP + ClassName + [ _C ]

输入BP.TestLua_C,意思在Content/Script/目录下放置TestLua_C脚本

3fab0fea386f02ea2c844cfda882f296.png

确定无误后点击LuaTemplate按钮生成脚本

c5ee43b515173eff0bd0d55234689b8f.png

3263bba2eb136b535b62f24222422586.png

可以右键Script文件夹批量打开Lua脚本,注意,没事干别乱点,会重新覆盖脚本,巨坑!

196cc81e17f113b0d157ddff6d0141fc.png

到此为止,前期准备工作完成。

与蓝图的交互

打印Hello Word

打开TestLua_C.lua,发现常用的函数已经帮我们写好了,其中"--"表示注释

90a705676a203d7add28f70ba0970938.png

function TestLua_C:ReceiveBeginPlay()

UE4.UKismetSystemLibrary.PrintString(self,"Hello World!")

end

在ReceiveBeginPlay函数中写上打印,将TestLua蓝图拖入到场景中,点击引擎中的播放运行

e87d81ac34200d3d37e500179d6875a2.png

激动人心的Hello World出来了!

覆盖蓝图函数

新建TestPrintString函数,在BeginPlay的时候调用一下

31b94758ea50d50099eddeeca2cfe7f8.png

接下来就在lua脚本中重写TestPrintString函数

function TestLua_C:TestPrintString()

UE4.UKismetSystemLibrary.PrintString(self,"Hello Lua!")

end

531f71db55d4bdcac3acbc143f24fbc8.png

运行

273e9d6677d5c0a03653ff15b66dec3d.png

如果你不希望在蓝图EventTick来调用TestPrintString,而是在的BeginPlay中调用TestPrintString,,会没有效果,因为BeginPlay被lua覆盖了,如果想要在蓝图中也能够调用,需要回调self.Overridden.ReceiveBeginPlay(self)

117434c189fd439b2a9b1bf5e8bc73c3.png

df18f4c9538eddb5d8c38313d5eaddac.png

f93f37bb3f8e31bc1be306bab1226d14.png

除了这个之外self.Overridden.ReceiveBeginPlay(self),你会发现一个很相似的函数:

self.Super.ReceiveBeginPlay(self),这样的函数是返回Lua父类方法,不能够返回蓝图父类的方法

需要注意的是,Lua的继承比较奇葩,首先你得在蓝图中拥有继承关系,然后需要在脚本中注明继承类

比如新建一个ParentLua,然后让TestLua在蓝图中的父类选择为ParentLua,蓝图的ParentLua不需要UnLuaInterface接口,只需要生成lua脚本后,在TestLua脚本中声明继承类名

local TestLua_C = Class("ParentLua_C")

调试

写程序难免出错,Ulua虽然没有很好的调试手段,但也留下了难能可贵的错误输出日志信息

64a38cd71990294e71364c4e452666c0.png

如果不是特别精通Lua开发的同学,建议还是以蓝图为主吧,目前ULua开发还不是很友好。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值