一.简介
Lua 是一门扩展式程序设计语言,被设计成支持通用过程式编程,并有相关数据描述设施。 同时对面向对象编程、函数式编程和数据驱动式编程也提供了良好的支持。 它作为一个强大、轻量的嵌入式脚本语言,可供任何需要的程序使用。 Lua 由 clean C(标准 C 和 C++ 间共通的子集) 实现成一个库。
二.热更新
热更新技术就是可以在不重新下载客户端的情况下,实现更新游戏内容常见于移动端,lua语言经常用于游戏的热更新 与C#反射机制相比lua优点跨平台运行,不需要编译过程而c#反射最重要的是不兼容IOS平台。在unity热更新中就是通过AssetBundle更新游戏UI,也可以把脚本或者其他代码当成资源打包到AssetBundle然后更新到客户端,在所有热更新技术中都需要AssetBundle 如何利用Lua进行热更新:在移动端编写Lua解析器 通过解析器运行最新的Lua脚本 把控制逻辑或者UI的代码写成Lua脚本
三.简单语法介绍
1.变量
标示符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上0个或多个字母,下划线,数字(0到9)最好不要使用下划线加大写字母的标示符,因为Lua的保留字也是这样的 Lua 不允许使用特殊字符如 @, $, 和 % 来定义标示符。 Lua 是一个区分大小写的编程语言
-->变量
“--“在lua中是注释的意思
--print(var)
--gVar = 0 --全局变量
--var = 0
--print(type(var)) --number
--var1 = 0.2
--print((type(var1)) --number
-->在lua中number相当于C#中值类型(int float double)
-->默认number 就是double
--var3=false
--var4=“Lua”
--print((type(var3)) --booleam
--print(type(var4)) --string
--var5 = function()
--print(type(var5)) --function
--var6={}
--(type(var6)) --table
--gVar=0
--local x = 1
-->演示局部变量和全局变量(定义局部变量需要在变量前加上local关键字,当在代码块中声明的局部变量)
代码块结束后,该局部变量自动释放
--do
-- c=5
-- local c2=1
--end
--print(c,c2)
--lua 可以对多个变量同时赋值。变量列表和值列表各个元素之间用逗号隔开,赋值语句右边会依次赋值给左边
--x,y,z=1,2,3
-->练习1:交换俩个变量的值
--a,b=1,2
--a,b=b,a
--print(a,b)
-->如果变量列表少于赋值列表
-- x,y=1,2,3
-- print(x,y)
-- x,y,z=1,2
-- print(x,y,z)
Lua是动态类型语言,变量不需要定义,只需要为变量赋值即可
2.运算符
------->运算符优先级
-- ^
-- not -
-- * /
-- + -
-- ..
-- > >= < <= == ~=
-- and
-- or
--->除了^和..所有的运算符都是从左开始的
------>关系运算符 > >= < <= == ~=
-- a=10
-- b=20
-- print('a大于b为真吗:',a>b)
------>逻辑运算符 and(&&) or(|) not(!)
---->连接运算符..
-- a=10
-- b="10"
-- print(a..b)
---->长度运算符#
-- str="Hello lua"
-- print(#str)
3.分支结构
(1)if ...else
-->if
-- a=50
-- if a<0 then
-- print('a的值小于0')
-- else
-- print('a的值大于0')
-- end
-- a=-1
-- if(a>0) then
-- elseif a<0 then
-- print('a的值小于0')
-- elseif a==0 then
-- else
-- end
-->练习1:比较俩个数的大小
-- a,b=10,20
-- if a>b then
-- print('a的值大于b',a)
-- elseif a<b then
--print('a的值小于b',b)
-- else
-- end
------->循环 while
-- a=10
-- while a>0
-- do
-- print('死循环');
-- end
--->输出十句Hello lua
-- a=0
-- while a<10
-- do
-- print('Hello lua')
-- a=a+1
-- end
---->repeat..until 类似do ..while
-- a=10
-- repeat
-- print('Hello world',a)
-- a=a+1
-- until a>15
---->练习1-100之间所有的和不超过1500
-- sum,a=0,1
-- repeat
-- sum=a+sum
-- a=a+1
-- until sum>1500
-- print(sum-a)
---->for循环 1.数值for循环 2.泛型for循环
-- for i=1,10,1 do
-- print(i)
-- end
-- function f( x )
-- return x^2
-- end
-- for i=1,f(5) do
-- print(i)
-- end
-->练习1:1-100所有和
-- sum=0
-- for i=1,100 do
-- sum=sum+i
-- end
-- print(sum)