Lua热更新学习

在游戏开发中,常采用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时需要用select,select('#', ...) 与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 step=2
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.Load<TextAsset>("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.Get<Int>("a");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569594.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3栏布局技巧

流体布局 主要内容无法优先加载&#xff0c;影响用户体验 html结构&#xff0c;left,right&#xff0c;center&#xff0c;主要内容无法优先加载 <div class"container1"><div class"col_left">left</div> <div class"col_r…

[读书笔记] Effective C++

部分条款过于深奥&#xff0c;部分条款已了然于心&#xff0c;仅记录当下所识所学 条款02&#xff1a;尽量以const&#xff0c;enum&#xff0c;inline替换#define 对于常量宏定义&#xff0c;最好用const代替#define 对于函数宏定义&#xff0c;最好用inline代替#define #inc…

Unity资源管理--AssetBundle学习

Unity资源目录 当用Unity创建一个工程的时候&#xff0c;目录如下&#xff1a; Assets&#xff1a;存放Unity工程实际的资源目录。 Library&#xff1a;存放Unity处理完毕的资源&#xff0c;由unity自动转化生成。 Log&#xff1a;存放日志文件。 Packages&#xff1a;统一管…

[读书笔记] 设计模式与游戏完美开发

最近在看《设计模式与游戏完美开发》&#xff0c;文章将记录一些要点和一些设计模式实现 GoF定义的23种设计模式及应用场景 系统设计可以采用的设计模式&#xff1a;单例、状态&#xff08;场景切换&#xff09;、外观&#xff08;保证高内聚&#xff09;、中介者&#xff08…

auto关键字

使用前&#xff1a; #include<string> #include<vector> int main() {std::vector<std::string> vs;for (std::vector<std::string>::iterator i vs.begin(); i ! vs.end(); i){//...} } 使用后&#xff1a; #include<string> #include<vect…

[读书笔记] 代码整洁之道

书的示例是Java语言编写的&#xff0c;虽说不会影响阅读&#xff0c;但是后面几章讲应用这套方法论的时候&#xff0c;大篇幅的Java代码分析还是挺难受的&#xff0c;而且连java测试框架Junit都要细讲&#xff0c;对于非Java系的开发者来说&#xff0c;一些内容确是云里雾里。 …

iOS开发——GPUImage源码解析

一、基本概念 GPUImage&#xff1a;一个开源的、基于openGL的图片或视频的处理框架&#xff0c;其本身内置了多达120多种常见的滤镜效果&#xff0c;并且支持照相机和摄像机的实时滤镜&#xff0c;并且能够自定义图像滤镜。同时也很方便在原有基础上加入自己的滤镜Filter&#…

[读书笔记] 敏捷软件开发:原则、模式与实践

关于面向对象编程的一些理解&#xff0c;这本书主要看六大原则的部分&#xff0c;书中关于设计模式的内容由于之前的那本《设计模式与游戏完美开发》已经很好的讲解了游戏开发领域的应用&#xff0c;所以不多关注。 面向对象的六大原则 单一职责原则SRP&#xff1a;一个类应该…

Caffe-SSD相关源码说明和调试记录

1 对Blob的理解及其操作&#xff1a; Blob是一个四维的数组。维度从高到低分别是: (num_&#xff0c;channels_&#xff0c;height_&#xff0c;width_) 对于图像数据来说就是&#xff1a;图片个数&#xff0c;彩色通道个数&#xff0c;宽&#xff0c;高 Blob中数据是row-…

[游戏策划] 读书笔记

交互式媒体最有趣的地方在于&#xff0c;它让玩家直面问题&#xff0c;思考、尝试各种解决方案&#xff0c;并体验各种解决方案的结果。然后玩家可以回到思考阶段&#xff0c;规划下一步行动。这种反复试错的过程中&#xff0c;玩家的脑海里就会构建出一个互动的世界。 [读书笔…

YAML_02 playbook的ping脚本检测

ansible]# vim ping.yml---- hosts: allremote_user: roottasks:- ping:ansible]# ansible-playbook ping.yml //输出结果转载于:https://www.cnblogs.com/luwei0915/p/10615360.html

ECS框架学习

DOTS Unity DOTS是Unity官方基于ECS架构开发的一套包含Burst编辑器和JobSystem的技术栈&#xff0c;它旨在充分利用多核处理器的特点&#xff0c;充分发挥ECS的优势。 安装 Entities、Burst、Jobs、Hybrid Renderer&#xff08;必选&#xff0c;用于DOTS的渲染相关&#xf…

辅助排序和Mapreduce整体流程

一、辅助排序 需求&#xff1a;先有一个订单数据文件&#xff0c;包含了订单id、商品id、商品价格&#xff0c;要求将订单id正序&#xff0c;商品价格倒序&#xff0c;且生成结果文件个数为订单id的数量&#xff0c;每个结果文件中只要一条该订单最贵商品的数据。 思路&#xf…

关于游戏开发流程的分析

问题 传统游戏开发过程中通常是&#xff1a;策划提出需求&#xff0c;美术制作需求中的资源&#xff0c;程序实现需求中的功能&#xff0c;并导入资源实现最终效果。你觉得策划、美术、程序三者在开发游戏的过程中应该是一种什么关系&#xff0c;是否存在多种开发模式&#xf…

Ubuntu18.04应用程序安装集锦

整理网上的资源&#xff1a; Python Web开发工具箱 ubuntu美化及超NB的zsh配置 api文档查询工具&#xff1a;zeal&#xff0c;dash(收费)转载于:https://www.cnblogs.com/johnyhe/p/10403967.html

final使用详解

final的使用及注意事项 final是一个可以修饰变量&#xff0c;方法&#xff0c;类的修饰符 final修饰的方法不能被重写 final修饰的类不能被继承 final修饰的变量为一个常量 final不能与abstract一起使用 注意&#xff1a;当final修饰一个变量时要么在声明时就给该变量赋值&…

[读书笔记] 史玉柱自述:我的营销心得

与下属的关系 从玩家角度设定目标 目标感的设计 论随机性 在前15分钟留住玩家 实际观察玩家对于游戏的翻译反应 好游戏是改出来的 注重细节 决策民主、责任人制度 论简单与复杂的关系 游戏经济中的投放与回收 避免进入降低压力的怪圈 创业初期的股份分配 单个行业…

记一次面试腾讯的奇葩经历

阅读本文大概需要 2.8 分钟。 作者&#xff1a;黄小斜 文章来源&#xff1a;微信公众号【程序员江湖】 ​ 上回说到&#xff0c;我腾讯面试出师不利&#xff0c;简历随即进入备胎池&#xff0c;不过没过多久&#xff0c;转机还是来了。 大概是一周之后&#xff0c;我的电话响起…

foot

码云链接&#xff1a;https://gitee.com/zyyyyyyyyyyy/codes/rcfdzmin4a82v975pl1ko47 效果图&#xff1a; 原网站截图&#xff1a; 源代码&#xff1a; <!DOCTYPE html><html><head><meta charset"UTF-8"><title></title><s…