
Lua知识
Lua: xlua 、ulua/tolua 及 Luaframework等游戏相关的Lua知识
两水先木示
有时候,你不知不觉就完成了一个BUG!
展开
-
【xLua】xLua-master签名、加密Lua文件
userLoader就是进入到我们在实例化SignatureLoader时传入的第二个参数(一个委托对象),委托执行了加载原文件字节数组、解密操作,而load_and_verify函数是先进行的userLoader,拿到解密后的byte[]再进行签名解码,所以只能先签名文件、后加密文件,对应先解密文件,后解码签名。是我自定义的提供外部解码byte[]的,需自行加载文件原始byte[],以及传入lua文件相对路径(不带.lua后缀)实际也可以写个不用传路径的方法,因为只是用来警告提示的。原创 2025-01-07 19:09:02 · 827 阅读 · 0 评论 -
【Lua坑】Lua协程coroutine无法正常完整执行问题
(持有已入池对象行为)后面发生什么就是你会发现有些协程好像无法正常执行完成,明明上一个还在正常输出,下一个就突然消失了,也就是存在这种持有已入池对象行为,要把这种行为全部抹除才能恢复正常,或者直接干脆不用对象池了,可能性能开销会上升点,不然就得排查全部相关的持有代码,将上面代码加一行延迟1帧或延迟渲染结束就能解决问题(保证至少执行过1次延迟!我试过在remove后直接将co=nil,insert时检查co~=nil再进行,还是会有异常情况。如果Lua协程本身是没有对象池缓存机制的,那就不会存在我说的问题。原创 2024-09-18 18:20:59 · 634 阅读 · 0 评论 -
【XlsxToLua】Excel转Lua工具
创建一个Excel,列举一些很常用的测试下,基本都支持常见类型,更多案例Excel在XlsxToLuaCode\XlsxToLua\bin\Debug\TestExcel,但我没有一个个测试过 只有极个别不行。一般情况我们都会勾选下面2个来整体导出,但因为测试时发现这工具自带的模板excel数据导出有问题,所以暂时仅测我们自己创的。链接:https://pan.baidu.com/s/1m6GAbhXrupac7TSg-Fm_GA。搜索 TypeGuessRows 默认为8 修改为0。原创 2022-11-23 14:52:46 · 931 阅读 · 0 评论 -
xLua require not find 问题
xLua require文件寻找不到问题,但文件缺失存在,只是路径搜不到了原创 2021-12-18 21:37:14 · 797 阅读 · 0 评论 -
Lua 快速获取lua.exe方法
1、打开如下网站,找到你要下载的Lua版本(如5.3.4)LuaBinaries - Browse Files at SourceForge.net的我的是win64,因此下载win64点进去后需要等待一会 自动下载,无需科学上网原创 2021-09-26 11:51:40 · 1896 阅读 · 0 评论 -
Lua 5.3.4 for遍历问题
如上若不小心将遍历参数之一变成string类型,则可能会产生小数点number,从而导致一系列问题解决方法:将所有遍历参数转成number原创 2021-09-26 11:24:19 · 133 阅读 · 0 评论 -
【Lua坑】浮点数问题
浮点数精度问题:例如:local number = 0, 一直加一个分数例如 1/3 ,现实情况中 1/3 * 3 = 1,但是计算机会识别为 1/3 = 0.3333333... 然后这3个数相加,得出0.9999999999... 因此 1/3 * 3 近似等于1此时如果你代码写了 number >= 1.0 是不成立的, 但是你打印的number 却是 1.0, 因为lua的打印会将 0.9999999...四舍五入为 1.0 打印出来给你看。真实数据打印方法可以用 m...原创 2021-02-04 11:27:09 · 2981 阅读 · 0 评论 -
【Lua坑】IntelliJ IDEA编辑器的智能提示相关问题
---@class 子类名 : 父类名local 子类名 = class("子类名", 父类名)return 子类名注意:---@class 子类名 : 父类名 必须在local 子类名那一行之上,不能隔空行,隔开空行都会导致无法正确提示父类成员。即---@class无效类似其他的---@ 也要注意这种问题,---@xxx 就是用于修饰某个变量的,如果隔开空行可能会无效。例如你这样子写就无效了。---@class 子类名 : 父类名local 子类名 = class("子类名",.原创 2021-02-04 11:22:41 · 478 阅读 · 0 评论 -
【xLua坑】使用#和table.count的区别
概念:1、table是顺序表,即 { [1] = 1, [2] = 2, ...} 或 { 1, 2, ...}2、table是哈希表时,即 { ["a"] = 1, ["b"] = 2, ...} 或 { a = 1, b = 2 }-- 计算哈希表长度local function count(hashtable) local count = 0 for _,_ in pairs(hashtable) do count = count + 1 end return count.原创 2021-01-30 11:09:03 · 1201 阅读 · 0 评论 -
【xLua坑】使用pairs和ipairs的区别
1、当你的table是顺序表,即 { [1] = 1, [2] = 2, ...} 或 { 1, 2, ...} 时,#和table.count都可使用2、当你的table是哈希表时,即 { ["a"] = 1, ["b"] = 2, ...} 或 { a = 1, b = 2 }时,不能使用#,只能使用table.counttable.count方法是遍历哈希表计数返回,如下所示:-- 计算哈希表长度local function count(hashtable) local count原创 2021-01-30 10:56:50 · 721 阅读 · 0 评论 -
【xLua坑】require执行顺序问题
xlua的require执行顺序 很重要。xlua的require执行顺序 很重要。xlua的require执行顺序 很重要。xlua的require执行顺序 很重要。xlua的require执行顺序 很重要。目前经常遇到的问题是,require 子类 再require 基类 会导致子类无法识别出父类,从而各种报空问题,因为父类的方法没执行到!!!!!!!!...原创 2021-01-25 20:43:42 · 658 阅读 · 3 评论 -
Lua——load和loadstring函数用法
目录Lua环境实例说明允许传参的形式Load函数位于如下包体封装好的load函数 (等同于直接在Lua环境执行的loadstring函数)load(chunk, chunkname, mode, env)Lua环境实例说明a = 100local content = [[ return a]]local func = loadstring(content)print(func())等同于a = 100local func = function()原创 2020-11-18 22:27:58 · 13424 阅读 · 0 评论 -
Unity——lua文件(.lua后缀的文件)无法被Unity识别问题
官方手册:ScriptedImporter官方手册说明解决方法:将如下文件放入Editor文件夹下,等Unity自动刷新或重新打开Unity即可识别。using System.IO;using UnityEditor.Experimental.AssetImporters;using UnityEngine;[ScriptedImporter(1, ".lua")]public class LuaImporter : ScriptedImporter{ public ove原创 2020-11-14 21:13:27 · 2317 阅读 · 0 评论