Lua脚本编程:Lua语言入门

Lua是一门简单而强大的语言,其本身强大的扩展性使得这门语言在游戏设计等领域发挥着重要的作用。博主曾在Unity3D中使用过这门语言,并且针对Lua和Unity、C++等方面的内容进行了学习和讨论。最近因为在【游戏脚本高级编程】这本书中详细介绍了Lua脚本的相关内容,因此在这里记录下博主的读书心得,方便以后在需要的时候查阅。

Lua系统构成

Lua系统由Lua链接库、Luac编译器、Lua解释器三部分构成。 * Lua链接库主要由lua.lib和lua.h这两个文件组成。Lua链接库主要负责对自身进行初始化及关闭操作、装载脚本与执行脚本、提 供可调用交互接口。 * Luac编译器是一个由命令行驱动的编译器,其名称为Luac。当我们需要使用Luac编译器来编译一个脚本时,只需输入

>luac <FileName> //FileName为脚本名称

我们可以直接通过Lua链接库来装载脚本并在装载的过程中实现动态编译,可是这样会造成两个问题,即无法在动态编译过程中获取错误信息和动态编译使脚本加载速度变慢,在使用的时候应该注意到这个问题。 * Lua解释器是一个由命令行驱动的代码运行环境,我们可以直接在这个环境中运行和测试脚本代码。

Lua脚本语法注释:Lua脚本的注释以–开始,如>

当我们需要对多行脚本进行注释的时候,可以采取手动换行的方式进行多个单行的注释。 * 变量:Lua脚本中的变量是无类型的、隐式声明、首个字符必须是非数字字符、对大小写敏感。Lua脚本中变量的一个重要特性生支持多重赋值,即允许在赋值运算符的左边同时写下多个变量。如

— 变量个数等于数值个数x,y,z=1,2,3– 变量个数大于数值个数,z的值为nilx,y,z=1,2– 变量个数小于数值个数,3这个数值将被忽略x,y=1,2,3数据类型:在Lua中支持6种数据类型,即数字(number)、字符串(string)、函数(function)、表(table)、用户数据(userdata)、空值(nil)。数字(number)指整型和浮点型的数据。字符串(string)指字符串类型的数据。函数(function)指一个正式声明的函数的引用。如: if(n<2) thenreturn n elsereturn fib(n-1)+fib(n-2) fib2=fib– 调用fib函数print(fib2(5))表(table)是Lua语言中最简单同时是最复杂的数据结构:简单如普通数组,复杂如链表、字典、类等。IntArray={1,2,3,4,5}– 构造一个字符串类型的数组StringArray={“A”,”B”,”C”,”D”}– 打印IntArray的第一个元素,输出为1print(IntArray[1])– 显示声明StringArray索引0处的数值StringArray[(StringArray[0],StringArray[1])– 打印一个越界的数组值,,输出为nilprint(IntArray[10])[1]=1– 在Lua中表的索引可以是任意类型,因为表是基于键-值原理来工作的Enemy={}Enemy[“Name”]=”Enemy”Enemy[“HP”]=100Enemy[“Speed”]=30– 特别地,如果Key是一个合法的字符串类型,那么Table[Key]与Table.Key是等价的。Enemy={}Enemy.Name=”Enemy”Enemy.HP=100Enemy.Speed=30用户数据(userdata)是Lua语言中一个特殊的数据类型,它允许在Lua脚本的变量中存放C语言中的指针。空值(nil)是各种语言中通用的一种数据类型,在此不再赘述。在Lua脚本中我们可以使用type()函数来获取任意数据的类型逻辑与表达式:Lua和大部分的编程类似支持加减乘除等运算,不同的是在Lua中使用~=来表示不等关系。 Lua支持的条件逻辑主要有if-then-else以及嵌套的if-then-else,Lua不支持switch结构。Lua支持的循环结构主要有while、for、repea三种结构,如:– 这是一个while循环i=0while(i<10) do i++ print(i)i=0,10 do print(i)print(i) i++until(i>10)tables do print(k,value)endLua与C/C++交互

待更新,等研究完以后再更新吧,编译Lua5.3一直没有成功…..

自己要先看得起自己,别人才会看得起你

Lua脚本编程:Lua语言入门

相关文章:

你感兴趣的文章:

标签云: