当前位置:   article > 正文

UnLua学习笔记

unlua

UnLua插件下载地址:GitHub - Tencent/UnLua: A feature-rich, easy-learning and highly optimized Lua scripting plugin for UE.

在github下载之后时一个完整的项目文件,打开项目文件是这样的,如下图

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWVsbG93X2p1YW5qdWFu,size_7,color_FFFFFF,t_70,g_se,x_16

里面有一个射击的案例可以玩,我只是大概的看了一下,因为是入门我就按着我自己所想的记录一下,之前是没有接触虚幻的,是unity转的虚幻。

一、导入UnLua插件

打开引擎新建一个项目文件,找到项目文件的地址,然后把从github上下载的腾讯开源项目里面把Plugins文件一整个拖进自己的项目文件里面,这样我们就相当于是有这个插件了。如下图(没有把Plugins文件是复制进去的,其他的文件是项目自有的,我这里创建的是空项目,语言选的是c++)

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWVsbG93X2p1YW5qdWFu,size_8,color_FFFFFF,t_70,g_se,x_16

二、关联Lua脚本

1、关卡关联

新建一个关卡,双击新建的关卡确保当前场景是我们新建的关卡,打开蓝图编辑器

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWVsbG93X2p1YW5qdWFu,size_20,color_FFFFFF,t_70,g_se,x_16

 打开之后是这样的,我们顺带点击红色框选的Class Settings 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWVsbG93X2p1YW5qdWFu,size_20,color_FFFFFF,t_70,g_se,x_16

 到这只是继承了UnLua接口还没有与Lua脚本关联(记得点击左上角的Compile编译一下然后Save一下),如果是在项目文件打开的情况下把Plugins文件复制进去的,要重新启动一下项目,要不然继承UnLua接口的时候会找不到UnLuaInterface

回到前面看到的项目文件的截图里面去,找到我们的Content文件(这个文件存放的都是项目所需要的资源),点击进去可以看见Scripts文件,在没有把我们的Plugins文件,复制进去的时候,是没有Scripts文件的。可能是Plugins文件里面有UnLua插件所以在把Plugins文件复制进去的时候就自己生成了一个Scripts文件,点进去的时候里面有两个lua脚本 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWVsbG93X2p1YW5qdWFu,size_9,color_FFFFFF,t_70,g_se,x_16

 在这里我们有三个办法创建lua脚本(可能大家还有其他的),第一种创建方法,我在Scripts文件里面新创建了一个文件夹,叫做MyFirstLua(也可以在自己使用的IDE里面创建),然后在新建的文件夹里新建一个lua脚本(我这里是创建一个文本文档把文件后缀改为lua)

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWVsbG93X2p1YW5qdWFu,size_11,color_FFFFFF,t_70,g_se,x_16

 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWVsbG93X2p1YW5qdWFu,size_20,color_FFFFFF,t_70,g_se,x_16

 再之后回到引擎里面(还是再关卡蓝图里),找到GetModuleName双击

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWVsbG93X2p1YW5qdWFu,size_20,color_FFFFFF,t_70,g_se,x_16

 双击进去之后就可以看见下图这样的,把我们新建的lua脚本的路径放进去。lua脚本所在文件夹.脚本名字(以此类推,多个文件夹:文件夹名.文件夹名.脚本名)

 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWVsbG93X2p1YW5qdWFu,size_20,color_FFFFFF,t_70,g_se,x_16

第二种是在Ide里面创建,拿VSCode举例:新建文件,记得在后面加上.lua要不然就不是lua脚本,要是忘记了可以之后再加也可以。关联和上面是一样的

我还发现了一个比较好玩的,在我们关卡蓝图继承了UnLua接口之后(本来是想说第三种方法的),点击这个UnLua其实也是可以新建一个lua脚本,但是当我们第一次打开这个关卡蓝图关联UnLua接口,再点击这个UnLua发现没有新建lua脚本的命令,只有一个Bind选项【图一】(Bind选项就是会继承UnLua接口,前面我们是手动去绑定的,这里可以直接绑定,但是需要编译保存之后退出蓝图再进关卡蓝图就可以看见继承UnLua了),第二次打开的时候才有新建lua脚本模板的选项【图二】

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWVsbG93X2p1YW5qdWFu,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWVsbG93X2p1YW5qdWFu,size_20,color_FFFFFF,t_70,g_se,x_16

 然后选择第二个选项就可以创建一个Lua脚本模板(芭比Q了,刚刚没有建成功,但是我早上的时候有新建成功来着【这里之后会详细记录一下】)我还是先上图吧,再在这里新建的lua脚本是下面图二这样的,前面说的那两种里面就是空白的

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWVsbG93X2p1YW5qdWFu,size_15,color_FFFFFF,t_70,g_se,x_16

 最后测试是否关联成功,在lua脚本里面码上这些代码,然后保存去引擎里面运行

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWVsbG93X2p1YW5qdWFu,size_8,color_FFFFFF,t_70,g_se,x_16

怎么查看是否打印出来了,根据下面的步骤

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWVsbG93X2p1YW5qdWFu,size_17,color_FFFFFF,t_70,g_se,x_16

 打开这个窗口之后,运行就可以看到我们打印的东西(打印的东西太多,我就直接搜索了我们代码里面要打印的字符串)

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWVsbG93X2p1YW5qdWFu,size_17,color_FFFFFF,t_70,g_se,x_16

 好了,这里就到此结束了,我也只是记录一下自己的学习

另外脚本里面的 Initialize 函数是重写了C++里面的 Initialize 函数。如果不是C++里面的函数那么就是纯Lua(因为我不太会,然后去问了导师,是我导师和我说的,这句话是我自己理解的,要是有错欢迎指正)

2、UMG关联Lua

UMG和Lua脚本关联和关卡和Lua脚本关联是一样的,只是新建Lua模板脚本里面的内容是不一样的

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWVsbG93X2p1YW5qdWFu,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWVsbG93X2p1YW5qdWFu,size_20,color_FFFFFF,t_70,g_se,x_16

 要是通过Bind来继承UnLua接口的,打开没有反应在编译保存之后可以关掉在重新打开

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWVsbG93X2p1YW5qdWFu,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWVsbG93X2p1YW5qdWFu,size_20,color_FFFFFF,t_70,g_se,x_16

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWVsbG93X2p1YW5qdWFu,size_7,color_FFFFFF,t_70,g_se,x_16

 

 因为前面没有详细的说这种方式,这里就详细说了一下,其他的和前面关卡和Lua脚本关联差不多

UMG创建的Lua模板脚本是这样的,下图所示

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWWVsbG93X2p1YW5qdWFu,size_13,color_FFFFFF,t_70,g_se,x_16

 测试是否关联成功和关卡一样,关卡里面把UMG和关卡关联起来,然后在 Initialize 函数里面用一个输出语句输出一下

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/904824
推荐阅读
  

闽ICP备14008679号