wordpress全站加速,广州低成本网络营销,网站怎么建设与管理,河南省信息网在游戏开发中#xff0c;常采用Lua进行热更新#xff0c;本文主要记录lua学习过程中的知识点 Lua框架选择腾讯维护的xLua进行学习
lua语法
Lua中文文档
常用tips
// 无需结尾;分号
// nil 表示回收内存
// type() 获取类型
// 单行注释 --
// 多行注释 --[[]]--
// 字符串…在游戏开发中常采用Lua进行热更新本文主要记录lua学习过程中的知识点 Lua框架选择腾讯维护的xLua进行学习
lua语法
Lua中文文档
常用tips
// 无需结尾;分号
// nil 表示回收内存
// type() 获取类型
// 单行注释 --
// 多行注释 --[[]]--
// 字符串连接 ..
// 求字符串长度 #str 字节数
// tonumber() tostring()
// lua没有整数类型
// lua没有 --
// lua的不等于~
// lua的power()可以直接用^
// 与and 或or 非not
// lua默认为全局变量 如需声明局部写local
// 基本类型 nil boolean string number table function
// 字符串定义 [[]]
// lua内置关键字arg 代替{...}
// 当可变参数含有nil时需要用selectselect(#, ...) 与arg冲突 可变参数的长度 select(i, ...) 从i到末尾的所有元素判断与循环
// 判断语句
if() then
elseif() then
else
end
// while循环
while() do
end
// repeat循环
repeat
until()
// for循环 数值
for i 1, 10, 2 do // 1-10 step2
end
// for循环 泛型
// ipairs()数组集合,遇到nil不再输出 pairs()键值集合可输出nil及其后面的元素
for k, v in ipairs() do
end函数定义
// 函数 无需返回无需参数类型支持多返回值
function funName(num1, num2)
end
// 匿名函数 无需函数名但需赋值
funName function(num1)
end
// return funName() 尾调用不占用堆栈空间不会栈溢出
// 函数本质与普通类型相同可以存储在变量或者表中
// 函数只有一个实例 闭包可以拥有多个实例
// 定义模块不能加local// 标记视频 16 14 19字符串操作
string.len() string.upper() string.lower()
string.find()
string.sub() string.gsub() // 字符串截取 字符串替换
string.reverse() // 反转
string.format(%d%d, num1, num2) // 格式化table
// * lua下标从1开始
// table.getn() 不可获得键值集合的长度
// table.concat() 合并
// table.insert() 插入
// table.remove() 移除
// table.sort() 排序 可按ascii排字符串面向对象编程
// 声明空表
Person {}
// 定义字段
Person.Name
// 定义方法
function Person.Run()
end
person.Run function()
end
// 定义局部表引用变量降低耦合性
local this Person
// 使用self需要改成Persion:Run()标准库函数
math.abs() math.max() math.min() math.sin() math.cos() math.sqrt()
math.randomseed() math.random() math.floor()
os.data() os.time()
// 自定义随机生成 os.time() reverse sub(1, 6)内置IDE sciTE VS环境 babelua插件
热更方案
xLua项目地址
三种C#读取Lua文件的方法
using XLua;
public class FirstLua:MonoBehaviour {LuaEnv env null;void Start() {env new LuaEnv();// --------------------1. 简单使用----------------------env DoString(print(Hello World)); // 使用Lua脚本env DoString(CS.UnityEngine.Debug.Log(Hello World)); // Lua调用C#系统类// --------------------2. 使用TextAsset方式加载----------------------TextAsset ta Resources.LoadTextAsset(HelloWorld.lua);env.DoString(ta.ToString());// --------------------3. 使用require加载文件----------------------// 需要保证文件位于Resource文件夹下且以.txt后缀结尾env.DoString(require HelloWorld); // 不用加后缀// --------------------自定义文件路径----------------------// 文件位置随意也不需要.txt结尾env.AddLoader(CustomMyLoader);// 修改默认路径private byte[] CustomMyLoader(ref string fileName) {// 定义lua路径string luaPath Application.dataPath /Scripts/LuaScripts fileName .lua;// 读取指定路径下的文件内容需引入using System.IOstring strLuaContent File.ReadAllText(luaPath);// 数据类型转换byte[] byArrayReturn System.Text.Encoding.UTF8.GetBytes(strLuaContent);return byArrayReturn;}}void OnDestroy() {env.Dispose();}
}获取全局基本数据类型
env.Global.GetInt(a);