Unlua笔记
网上一大堆收费教程,要吐了,穷,自学虚幻真迷茫,TMD管他的,我就不信,不学那些收费课程,还不能自学成才了!!!!
2022/8/18回来看当时的我还是有点搞笑的哈
源码面前了无秘密
一、Unlua环境搭建
转载
https://www.cnblogs.com/sevenyuan/p/11990776.html
之后去学习Lua脚本语言
二、Unlua在虚幻上的运用学习
转载
https://blog.csdn.net/weixin_34803466/article/details/112494155
动手过一遍,熟悉一下,有个印象,
问题:lua调用函数时什么时候使用冒号?什么时候使用点号?
https://www.zhihu.com/question/359155685
lua中的对象、类(扩展)、表、数组,都是同一种数据结构,这个数据结构里面包含了一个数组域和一个哈希表域。数组域主要是用来提高某些lua数组的运算速度,若不考虑性能,一个哈希表是可以完全实现这种功能的。
所以不妨就认为table是一个哈希表,你所有的TABLE.property、TABLE.method都是一次哈希表的访问。
而TABLE:property()这种调用是lua的一个语法糖,并没有什么实际的语言层面的扩展。它等同于TABLE.property(self=TABLE, ...)(伪代码),将调用该函数的table作为参数self传入函数。这样你就可以在函数体内直接用self访问这个调用者,这样就很像C#里面的this(但不是,而且差远了)。这个功能是lua解释/编译器帮你实现的,实际运行的字节码中两种写法完全一致。
另一个关于<>的,lua是动态语言,也没有类型限定,而且它也只有一种数据结构table,可以理解为C#中的Dictionary<string, object>。C#中的尖括号主要是用来约束类型,提高安全性,在编译期就排除掉一部分错误。
设想如果一个表中存的是数字,但是一个字符串也被不小心存了进去,此时如果去做一些操作就很可能出现问题。C#的编译器会直接帮你检测出这个问题,并且不允许编译。而lua没有。
也不知道学这个Unlua有什么用,有些逻辑在蓝图里实现的确太臃肿,用lua便捷;虚幻的C++编译真JB慢,早知道走Unity那条路了,后悔。。。。。。。
2020/8/18 游戏开发的技术是相通的,加油少年;游戏开发这条路是一场马拉松,每天进步一点
2022/8/19 新的一天开始了,明天8月20号黑神话悟空团队是否会发出宣传片呢,期待一下,继续lua的学习
研究一下lua的源码理论问题
lua是如何调用C++或者说如何和这些寄主发生交互的?
https://blog.csdn.net/yulijuanxmu/article/details/103135479
实际上,我们早就在无形中用到过这个概念了。比如我们在lua的脚本中使用过print函数。由于lua本身就是用C语言实现的,所以lua的print函数也只是调用了C语言的fwrite函数而已。稍后我们会从源码的角度来看一下这个实现,现在首先来说说怎么让lua调用C++的函数。
首先要明确一点,就是lua和C++之间的交互依然是通过栈来实现的,通过栈进行数据交互。那么我们想一想,如果lua要调用C++的函数,那么哪些消息需要通过栈来传递呢?要成功调用函数,必须要有三个信息:
1. 函数地址(上哪儿调)
2. 函数参数(输入是什么)
3. 函数返回结果(输出是什么)。
后两个要素实际上通过前面的学习,我们已经知道了,无非就是用lua_pushstring,lua_tostring类似的接口。那么我们关注的重点就是如何让lua知道C++的函数地址。

浙公网安备 33010602011771号