刚刚从Unity3D培训学校毕业,满以为自己一毕业就可以拿到8K左右的高工资,甚至还奢望过10K以上。但是现实会给你狠狠的上一课。
在学校里学的那点东西根本不够看,当当新手还可以,但是稍微往深处挖一挖是根本不够的。所以再这里也奉劝还没入行但是想入行的人,如果真的想从事这个职业,千万不要去培训学校,自己自学一些基础的知识。然后去一家公司实习,这才是正确的道路。
目前本人刚刚入职一家游戏公司,公司新项目的客户端是用lua语言写的。苦逼的我根本对lua一窍不通,所以只能从头开始学起,今天是学习的第一天,希望能在这里记录自己学习lua的点点滴滴。
首先说说lua这门语言的特点:
1.简易性,这门语言简单小巧,易于学习。有利于减小lua自身的大小
2.高效,lua 可以说是领域中最快的语言之一了
3.可移植性,lua可以运行在任何平台上
在lua中一般将字符串用双引号“Hello world”,单个字母用单引号‘A’。但是就算颠倒一下也没什么。
- -代表将一行语言给注释掉
--[[ --]] 代表文本注释
lua执行的每段代码,都成为一个“程序块”。一个程序块也就是一连串的语句或命令。
几条连续的语句中可以使用;分隔,也可以不使用,用空格隔开即可
lua是有大小写区分的,A和a定义的是不同的变量
lua中有全局变量和局部变量。使用local定义的变量就是局部变量,不使用任何关键字定义的变量就是全局变量
如果要删除某个全局变量,那么将这个变量的值赋值为nil即可。
function num() 与 function num()
a=1 local a=5
local a=5 a=1
end end
num() num()
print(a) -->1 print(a) -->nil
为什么上面两个函数会造成不同的结果呢?因为第一个函数中a是全局变量,而第二个函数中a是局部变量。而局部变量出了函数是没有值的。
lua有八种基础类型:nil空值 boolen布尔值 number数字 string字符串 userdata自定义类型 function函数 thread县城 table表
函数type可以根据一个值返回其类型名称 例如:print(type(“hello”)) -->string
变量没有预定义的类型,任何变量都可以包含任何类型的值 甚至a=print都是合法的
number类型用于表示实数,lua没有整数类型,lua中的数字可以表示任何32位整数
lua中的字符串是不可变的值。
lua提供了运行时的数字与字符串的自动切换, 例如print(“10”+1) --> 11
lua中 .. 是字符串操作符。当直接在一个数字后面输入它的时候,必须用空格来分隔他们。不然lua会将第一个点理解为一个小数点。 print(10..20) -->1020
lua有两个转换函数 tonumber tostring 如果转换不成功的话会返回nil值
可以在字符串前面放置#来获取该字符串的长度
lua中的table类似于C#中的字典,通过键取值 申明的方式:a={} 赋值的方式a["x"]=10
b=a 是将table的引用给了b,代表b也指向了table表a
当一个程序再没有对一个table的引用时,lua的垃圾收集器最终会删除该table,并复用它的内存
所有table都可以用不同类型的索引来访问值,当需要容纳新值时,table会自动增长。当table的某个元素没有初始化时,它的内容就为nil。删除某个元素的时候,就是给这个元素赋nil值。
在table中a[“x”]与a.x是等效的。 注:X是有引号的。 索引X与“X”是两个不同的索引
长度操作符#可以用来返回一个table中的最后一个索引值 例如: a[#a]=nil 删除最后一个值
table.maxn()可以返回一个table的最大正索引数