Unity3D热更新<一> 学习Lua

本文介绍了Lua脚本语言的基础知识,包括变量类型、控制结构、函数和表等核心概念。Lua是一种轻量级语言,广泛应用于游戏开发中的热更新。文章通过实例展示了Lua的基本语法和特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 相当于取反


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是重阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值