热更新(一) -之Lua语法的学习

热更新

如热更新果需要更换UI显示,或者修改游戏的逻辑,这个时候,如果不使用热更新,就需要重新打包,然后让玩家重新下载(浪费流量和时间,体验不好)。热更新可以在不重新下载客户端的情况下,更新游戏的内容。

(1)热更新的实现方式

1,使用Lua脚本编写游戏的UI或者其他的逻辑
Lua是一个精悍小巧的脚本语言,可以跨平台运行解析,而且不需要编译的过程
2,使用C#Light
3,使用C#反射技术

(2)在所有的热更新技术中都需要AssetBundle

Unity提供了一个资源更新技术,就是通过AssetBundle,我们可以通过AssetBundle更新游戏UI,也可以把脚本或者其他代码当成资源打包成AssetBundle然后更新到客户端。

(3)热更新技术的学习过程

1,学习Lua编程
2,学习通过LuaInterface和luanet进行Lua和C#的交互通信
3,学习使用AssetBundle进行资源更新
4,学习uLua SimpleFramework
利用us创建自己的热更新游戏

Lua编程的学习

(0)编写程序

1,找到luaforwindows的安装目录,找到SciTE
2,打开SciTE,写入第一行Lua代码
print("Hello World")
3,保存代码,保存为HelloWorld.lua
4,按下F5运行

(1)程序分析

Lua中每一条语句后面是没有;号的

(2)定义变量

num = 100
这里定义了一个全局变量叫做num,赋值为100
在Lua中定义变量是没有类型的,根据存储什么数据,来决定是什么类型

(3)注释

1,单行注释 --注释内容
2,多行注释 --[[ 这里是注释内容 ]]--

(4)Lua中变量类型

4,number小数类型(Lua中没有整数类型)
5,table表类型
myTable = {34,134,34,2,342,4}
myTable[2],表示134,索引是从1开始的。
我们可以使用type()来取得一个变量的类型

(5) 流程控制
-- if语句

1, if [condition] then
end
2, if [condition] then
else
end
3, if [condition] then
elseif [condition] then
else
end

-- while循环
Paste_Image.png
Paste_Image.png
--repeat循环(do while)
Paste_Image.png
Paste_Image.png
Paste_Image.png
--for循环
Paste_Image.png

break可以终止循环 没有continue语法

(6)函数(方法)
Paste_Image.png
Paste_Image.png
--标准库
1,数学处理的math相关函数
2,字符串处理的string相关函数
Paste_Image.png
3,表处理的table相关函数

在Lua中的table类似C#中的字典,其实就是一个 key-value键值对的数据结构。
1...table的创建
myTable = {}
表名后面使用{}赋值,表示一个空的表
2...table的赋值
myTable[3]=34 当键是一个数字的时候的赋值方式
myTable["name"]="taikr" 当键是一个字符串的赋值方式
myTable.name = "siki"当键是一个字符串的赋值方式
3...table的访问
myTable[3] 当键是数字的时候,只有这一种访问方式
myTable.name 当键是字符串的时候有两种访问方式
myTable["name"]
4...table的第二种创建方式
myTable = {name="taikr",age=18,isMan = false}
(表创建之后依然可以添加数据)
数据访问
myTable.name
myTable["name"]
5...table的第三种方式(类似数组的使用)
myTable = {34,34,34,3,4,"sdfdsf"}
当没有键的时候,编译器会默认给每一个值,添加一个数字的键,该键从1开始
6...表的遍历
(1),如果是只有数字键,并且是连续的可以使用下面的遍历


Paste_Image.png

(2),所有的表都可以通过下面的方式遍历

Paste_Image.png

7...表相关的函数
(1).table.concat (只针对只有值的情况)
把表中所有数据连成一个字符串


Paste_Image.png

(2),table.insert
向指定位置插入一个数据


Paste_Image.png

(3),table.move
移动数据

Paste_Image.png

(4),table.sort(从小到大排列的)
排序


Paste_Image.png

8...通过表来实现面向对象
myTable={} 申明对象
local this = myTable声明this关键字代表当前对象
--定义并声明对象中的属性
myTable.name="siki"
myTable.age = 110
--定义并声明对象中的方法
myTable.function = function ()
[code to execute]
end
function myTable.function ()
[code to execute]
end


Paste_Image.png
4,文件操作的io相关函数
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容