Lua是一种轻量级脚本语言,目前UNITY3D的热更新主流采用Lua,所以要先学习Lua语法。我百度了一下IDE,下载了LuaStudio还比较好用,小巧方便。
Lua在使用中不需要预先定义变量的类型。默认定义都是全局变量,只有用local修饰才是局部变量。在Lua中只有fasle和nil(相当于null)是fasle,其他全部是true!包括0和空字符串也是true!
Lua中基本的类型有:nil、boolean、number、string、userdata、function、thread、table。可以使用type函数来判断变量的类型。
1. nil
nil是一个特殊的类型,用来表示该变量还没有被赋值,如果一个变量赋值为nil,可以删除这个变量。
2. boolean
boolean类型的变量只有两个值:true和false。在条件表达式中非常有用的。在控制结构条件中只有false和nil为假,其他值都是真的。因此Lua认为0和空字符串都为真。
3. number
number在Lua中是双精度浮点数。没有整数类型。
4. string
在Lua中字符串是不可修改的。string和其他对象一样,Lua自动进行内存的分配和释放。
Lua字符串可以小到一个字符,也可以包含百万字符以上。
可以使用单引号或者双引号表示字符串,还可以使用[[...]]来表示字符串。
对于字符串中含有引号的字符可以使用\来进行转义。
..在Lua中是字符串连接符。当在一个数字后面写..时,必须加上空格,否则出错。
Lua会根据上下文在合理的情况下,对数字和字符串之间进行转换。如果需要显示的将string转成数字可以使用函数tonumber(),反之,可以使用tostring()将数字转成字符串。
5. function
函数可以存储在变量中,可以作为函数的参数,也可以作为函数的返回值。 切记不能加Do 只以end结束
6. table
table 中的每项要求是 key = value 的形式。 省略key时,会自动以1开始编号,并跳过设置过的key。
key 只能是字符串, 这里的 web, QQ, a, b 都是字符串,但是不能加上引号, 否则出错。
要加上引号的话,必须要加[],比如["name"]=12
通过 key 来访问 table 的值,这时候,必须加上引号。
-- 单行注释
--[[
多行注释1
]]
--[=====[
多行注释2 两个括号间的=号要一致 多少个都行
]=====]
--打印字符串
print (" Hello world! ") ;
--Lua变量不用定义类型 ..是连接字符串 数字后面要打一个空格,否者会报错 字符串用单引号双引号都可以
aaa = 7758521 .. "我爱你"..'中国';
--function函数 以end结束
function GetType()
--获得变量的类型
return type(aaa);
end
-- 函数可以存储在变量中
bbb=GetType();
--打印出函数返回值string
print(bbb);
--table类型 键值对 KEY值默认必须是字符串,但是不能写引号,省略key时,会自动以1开始编号,并跳过设置过的key。
Mytable = { name = 'chongyang' , 88,age = 29,99 ,xuhao=nil }
--通过Key获得value
print( Mytable["name"] );
--通过自动编号获得value
print( Mytable[1] );
--if语句 if和elseif后面要加then 以end结束 else后面不能加then
if(8+2~=10) then
print("这句肯定执行不了,因为8+2不可能不等于10");
elseif(8+2<10) then
print("这句肯定也执行不了,因为8+2不可能小于10");
else
print("因为8+2只能大于或者等于10");
end
--For循环 设定i初始值 最大最小值是自动判断,-1是步长 可以不写步长 不写话 默认为1
for i=0 ,-10 ,-1
do
--给table的KEY赋值
Mytable["xuhao"]=i;
print( "序号为 " .. Mytable["xuhao"] );
end
-- #NumTable #table类型是确定表的长度
NumTable ={ "我是第","个大白痴" };
for i=1,#NumTable,1
do
print(NumTable[1].. i .. NumTable[2]);
i=i+1;
end
--while循环
num =1;
while(num<10)
do
print(num);
num=num+1; --lua 没有自增自减符号 不能写成num++ num--
end
--repeat until(条件) 循环 意思是重复直到满足条件就退出
a=10;
repeat
print(a);
a=a-1;
until (a<0)
--逻辑运算符号 and, or, not 和C系语言差别特别大 不太好理解
a=false
b=1
print( a and b ); --如果当a为假,返回a,否者返回b
print( a or b ); --如果当a为真,返回a,否者返回b
print( not a) ; -- not 永远返回的只是true 和 false 相当于取反