
Lua
文章平均质量分 77
Momo_Da
这个作者很懒,什么都没留下…
展开
-
Lua错误处理
语法错误语法错误通常是由于对程序的组件(如运算符、表达式)使用不当引起的。一个简单的实例如下:-- test.lua 文件a == 2以上代码执行结果为:lua: test.lua:2: syntax error near '=='正如你所看到的,以上出现了语法错误,一个 "=" 号跟两个 "=" 号是有区别的。一个 "=" 是赋值表达式两个 "=" 是比较运算。另外一个实例:实例fora=1,10 print(a)end执行以上程序会出现如下错误:...原创 2021-09-28 15:01:56 · 1728 阅读 · 0 评论 -
Lua类封装
通过元表指向父类,并且当获取字段的时候将字段Clone到当前元表中,下次获取字段就可以直接获取数据。云风的封装适用于有多层继承关系的情况,使用简单,性能和内存优化上都有较好解决。--作者:云风--[[模拟继承结构的基类]]local _class = {}function Class(super) local class_type = {} class_type.ctor = false --构造函数 class_type.super = sup转载 2021-07-19 10:45:54 · 715 阅读 · 0 评论 -
ulua 路径
在学习ulua时,require模块的根路径可以为项目的Lua文件夹或者ToLua文件夹(Editor下),但是在package.path和package.cpath中并没有看到当前项目的路径,那require是如何找到Lua和ToLua文件夹的路径的呢?ulua在初始化LuaState时,会先解析package.path, 并将其存入LuaFileUtils的SearchPaths中(LuaState.cs line:603),并将Lua和ToLua的目录添加其中(LuaState.cs line:1原创 2021-03-04 18:47:32 · 303 阅读 · 1 评论 -
Lua和C++交互总结
文不涉及lua语法学习,如果有需要,请移步:http://book.luaer.cn/一.lua堆栈要理解lua和c++交互,首先要理解lua堆栈。简单来说,Lua和C/c++语言通信的主要方法是一个无处不在的虚拟栈。栈的特点是先进后出。在lua中,lua堆栈就是一个struct,堆栈索引的方式可是是正数也可以是负数,区别是:正数索引1永远表示栈底,负数索引-1永远表示栈顶。如图:二.堆栈的操作因为lua与c/c++是通过栈来通信,lua提供了C API对栈进行操作。我们先来转载 2021-03-02 17:50:56 · 403 阅读 · 0 评论 -
lua table 是否为空 next 函数
next其实就是pairs遍历table时用来取下一个内容的函数.在项目的module中最好封装一下,免得module本地也有next函数于是封装后判断的lua table是否为空的函数如下:function table_is_empty(t) return _G.next( t ) == nilend...原创 2020-06-16 11:37:43 · 709 阅读 · 0 评论 -
简洁的lua编码
一. 普通技1. bool 值与 if 语句的择决让我们来看一段代码:local monthly_is_taken = app.player:getAttribute("monthly_is_taken")if monthly_is_taken == true then self._monthly_take:setButtonEnabled(false)else self._monthly_take:setButtonEnabled(true)end显然这个 .原创 2020-05-12 10:13:32 · 1141 阅读 · 0 评论 -
深度学习Lua--环境表
Lua语言将全局环境自身保存在全局变量_G中,如下输出全局环境中所有全局变量的名称:for n in pairs(_G) do print(n) end1.具有动态名称的全局变量全局变量在另一个变量中的获取,value = load("return"..varname)() 和value = _G[varname] 相同效果,后者效率高出一个数量级。...原创 2020-04-18 16:27:22 · 918 阅读 · 0 评论 -
函数式编程lua
函数式编程的本质函数式编程中的函数这个术语不是指计算机中的函数(实际上是Subroutine),而是指数学中的函数,即自变量的映射。也就是说一个函数的值仅决定于函数参数的值,不依赖其他状态。比如sqrt(x)函数计算x的平方根,只要x不变,不论什么时候调用,调用几次,值都是不变的。在函数式语言中,函数作为一等公民,可以在任何地方定义,在函数内或函数外,可以作为函数的参数和返回值,可以对函数进行...原创 2020-03-22 16:25:55 · 353 阅读 · 0 评论 -
lua热重载
Lua作为脚本语言嵌入游戏开发中,写业务的过程中会有这样的问题,为了查问题,在逻辑中打Log信息,需要把Unity重新运行。这个时候Lua的热重载就显得非常有必要了~所谓的热重载就是不需要重启Unity,直接更新我们Lua虚拟机里面的方法等~达到无缝更新,能大大提高我们的工作效率。Git上面就有这个方案~附上链接https://github.com/asqbtcupid/lua_hotup...原创 2020-02-28 17:19:59 · 818 阅读 · 0 评论 -
听说是腾讯最难lua笔试题
function class(...) -- 返回的表类似“类”的定义 local cls = {} -- 数据都存储在这里面,用作数据存储空间 local data = {} -- 复制传入...的的成员。传入的...类似类定义中的成员列表。需要将父类,以及...内的成员都复制过来 local function copyField(src...原创 2020-02-23 15:50:48 · 751 阅读 · 0 评论 -
lua 常用函数思路
1、计算数字位数,前位补零-- 计算数字的位数function DightNum(num) if math.floor(num) ~= num or num < 0 then return -1 elseif 0 == num then return 1 else local tmp_dight = 0 ...原创 2019-10-29 09:54:49 · 1430 阅读 · 0 评论 -
lua 深拷贝与浅拷贝
浅拷贝修改拷贝的某个键对应的值并不影响原始的表的键对应值(只能作用于第一层,如果多层嵌套就会导致原始表被修改)这个深拷贝可以同时复制原始表的元表。如果不许要可以将setmetatable(copy, deep_copy(getmetatable(orig)))去掉。--- Deep copies a table into a new table. ...原创 2019-10-28 17:51:10 · 401 阅读 · 0 评论 -
使用VSCode断点调试Lua教程
一.安装Visual Studio Code(vscode)和插件中心搜索安装luaide二.配置luach.json1.工程文件夹直接拖入vscode即可2.左侧栏调试图标->设置->选择LuaDebug,这时会出现launch.json文件3.在launch.json文件中找到exePath字段修改到模拟器路径例如:"exePath": "D:/xxx/play...原创 2019-09-11 10:39:38 · 4398 阅读 · 0 评论 -
LuaEventDispatcher
--EventDispatcher.lualocal EventDispatcher = {}EventDispatcher.__index = EventDispatcherfunction EventDispatcher:new() local store = nil return function(self) if store then return原创 2017-09-08 20:07:06 · 879 阅读 · 0 评论 -
lua代码的性能优化
Roberto Ierusalimschy写过经典的Lua 性能提示的文章,链接地址>>我通过实际的代码来验证,发现一个问题。当我使用 LuaStudio 运行时,发现结果反而与提示相反,甚是奇怪,而使用luac进行运行,与作者给予的提示相符,在某些地方性能可能有优化,比如读取35kb的文件时,时间还是比较快的(可能5.1版本做过优化了)。日常的Lua编码中,需要注意以下几点:...原创 2019-04-19 10:15:10 · 1237 阅读 · 0 评论 -
深度学习Lua--元表
元表的元方法函数 描述 __add 运算符 + __sub 运算符 - __mul 运算符 * __ div 运算符 / __mod 运算符 % __unm 运算符 -(取反) __concat 运算符 .. __eq 运算符 == __lt 运算符 < __le 运算符 <=...原创 2019-08-07 10:55:16 · 409 阅读 · 0 评论