游戏开发学习笔记——lua脚本语言——安装、汉化与小测试
FOR THE SIGMA
FOR THE GTINDER
FOR THE ROBOMASTER
简介:
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能,由于其轻量级、可扩展、自动内存管理等特点使其经常应用于游戏开发、独立脚本应用、数据库插件、安全系统等上面。使用上可以搭配C++进行食用。
目前发现的特点(与C/C++比较):
1、Lua是解析型语言,这种代码再执行时会按照从上到下的顺序依次执行
2、Lua是弱类型语言,变量声明时无需指定数据类型
3、Lua中的函数没有明确的归属类,独立存在(函数关系上),同时Lua中的函数调用必须写在函数的声明之后(解析型语言),而且函数是否有返回值,取决于是否包含return,Lua中没有委托的概念,函数可以直接作为参数传递
4、Lua代码可以以 ; 结尾,也可以没有结尾处的标点符号(跟python一样,感觉脚本语言差不多都是这种)
5、Lua语言没有标准的变量书写指定的数据类型
6、Lua的数值类型,只有number(C/C++有int、float、double),且lua的布尔类型是boolean,没有char类型被[[ ]]取而代替
7、运算中lua并不支持++或是–这两种特殊运算符,同时Lua中不等于为~=,C/C++为!=,Lua中的逻辑运算符and,or,not,C/C++中为&&,||,!
8、Lua中的分支结构中没有{},使用then…end…代替。毎有一个if(布尔表达式)后面都会跟着一个then,在代码块写完后,换行接end结尾。而且,Lua中没有switch…case…语句。
9、Lua中的循环结构也没有{},使用do…end…代替。
10、Lua中没有do…while()…循环语句,但有与其相似的循环语句,为repeat…until()…语句,与do…while()…不同,当条件表达式为真时,结束循环,否则一直循环。Lua中跳出循环关键字没有continue,只有break。
操作系统版本:Windows10
lua官网地址
集成编译环境LuaStudio官网
SciTE官方下载地址
SciTE官网安装教程
SciTE常用编译环境的配置
更新:
2019.11.4 更新了目前发现与C/C++的区别
内容:
一、两种软件的安装与应用
这里考虑到经济因素问题,主要会以SciTE编辑器为编译工具,LuaStudio很好用,但是对于还没工作或是经济条件不出色的朋友,LuaStudio还是有点贵(188元人民币1个电脑MAC,640元人民币联网无限制使用),据说LuaStudio还是一个中国人开发的,在这里就不提倡大家盗版了,有钱的就去弄LuaStudio,没钱的就老老实实用免费的。
SciTE
1、下载:SciTE官方下载地址 luaforwindows
先安装luaforwindows再安装SciTE(lua自带的版本太低了)
点击luaforwindows来安装,完成后如下
可以看到的是安装的自带一个SciTE,但是一比较
所以我选择重新下一个新的SciTE,在将其与lua关联即可
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191024175457255.jp
2、汉化与配置:
运行SciTE,点Option->Open User Options File 在里面输入
、
#1、文字编码
code.page=65001
#GBK:code.page=936
#Big5:code.page=950
code.page=65001
output.code.page=65001
#2、换行(默认为不换行的)
wrap=1
#3、默认窗口设置(最大化)
#position.width=-1
#position.height=-1
#4、工作目录
#SciteDefaultHome=~
#5、最小化到系统托盘
minimize.to.tray=1
#6、文件尾留空(默认设置中,光标在文件最后一行时垂直滑动条无法再向下滚动)
end.at.last.line=0
#7、工具条
toolbar.visible=1
#8、状态条
statusbar.visible=1
#9、选中部分颜色(前景或背景)
selection.fore=#FFFFFF
selection.back=#0080FF
#10、设置语法提示
#如 api.*.c=$(SciteDefaultHome)\api\c.api
#11、设置 Tab
tabsize=4
indent.size=4
#12、文件中搜索
#默认搜索 *.c、*.cxx 和 *.h 文件。
find.files=*.*
#13、自动完成
autocompleteword.automatic=1
#14、自动补全 XML 标签
xml.auto.close.tags=1
#15、显示最近打开的文件
save.recent=1
#16、设置 Home/End
#默认跳至逻辑行的行首和行尾,即使打开了自动换行。
wrap.aware.home.end.keys=1
#缩略词配置:
#编辑 abbrev.properties 文件,按照如下格式定义缩略词。
#缩略词=完整词句
#如 Calon=Remainder Book
#编辑后输入“Calon”后按下 Ctrl+B,则自动替换为 Remainder Book。
#如果想让光标在替换之后定位在词尾之外的位置,则用一个管道符“|”指示该位置。
#如 Calon=Remainder|Book
#17 字体设置
#font.base=font:!Monaco,size:20
#font.small=font:!Monaco,size:16
# font.comment=font:!Monaco,size:18
# font.code.comment.box=$(font.comment)
# font.code.comment.line=$(font.comment)
# font.code.comment.doc=$(font.comment)
#font.code.comment.nested=$(font.comment)
# font.text=font:!Monaco,size:20
# font.text.comment=font:!Monaco,size:18
# font.embedded.base=font:!Monaco,size:20
# font.embedded.comment=font:!Monaco,size:20
# font.monospace=font:!文泉驿微米黑,size:20
# font.vbs=font:!Monaco,size:18
新建一个文件,并在里面输入
# Menus
# File menu
File=文件(&F)
New=新建(&N)
Open=打开(&O)
Open Selected Filename=根据所选文件名打开(&F)
Revert=返回上次保存状态(&R)
Close=关闭(&C)
Save=保存(&S)
Save As=另存为(&A)
Export=导出(&E)
As HTML=为 HTML 文件(&H)
As RTF=为 RTF 文件(&R)
Page Setup=页面设置(&U)
Print=打印(&P)
Load Session=载入文件列表(&L)
Save Session=保存当前文件为文件列表(&V)
Exit=退出(&X)
# Edit menu
Edit=编辑(&E)
Undo=撤销(&U)
Redo=重复上次动作(&R)
Cut=剪切(&T)
Copy=复制(&C)
Paste=粘贴(&P)
Delete=删除(&D)
Select All=全选(&A)
Copy as RTF=复制为 RTF(&F)
Match Brace=跳至对应的括号(&B)
Select to Brace=选取括号内容(包含括号)(&O)
Show Calltip=显示函数提示(&H)
Complete Symbol=补齐符号(&Y)
Complete Word=补齐文字(&W)
Expand Abbreviation=展开缩略语(&E)
Block Comment or Uncomment=增加/消去行首注释符(&M)
Box Comment=区块首尾及行首加注释符(&X)
Stream Comment=区块首尾加注释符(&N)
Make Selection Uppercase=转为大写(&S)
Make Selection Lowercase=转为小写(&L)
# Search menu
Search=搜索(&S)
Find=查找(&F)
Find Next=查找下一个(&N)
Find Previous=查找上一个(&S)
Find in Files=在文件中查找(&I)
Replace=替换(&E)
Next Bookmark=下一个书签(&M)
Previous Bookmark=上一个书签(&V)
Toggle Bookmark=设置/清除书签(&K)
Clear All Bookmarks=清除所有书签(&C)
# View menu
View=查看(&V)
Toggle current fold=折叠/展开(&C)
Toggle all folds=全部折叠/展开(&A)
Full Screen=全屏(&N)
Tool Bar=工具栏(&T)
Tab Bar=标签栏(&B)
Status Bar=状态栏(&S)
Whitespace=空白符(&W)
End of Line=换行符(&E)
Indentation Guides=缩排(&I)
Line Numbers=行号(&L)
Margin=书签页边列(&M)
Fold Margin=折叠状态列(&F)
Output=输出窗口(&O)
Parameters=参数(&P)
# Tools menu
Tools=工具(&T)
Compile=编译(&C)
Build=调试(&D)
Go=执行(&G)
Stop Executing=中止执行(&S)
Next Message=下一个消息(&N)
Previous Message=上一个消息(&P)
Clear Output=清除输出窗口(&O)
Switch Pane=切换窗格(&S)
# Options menu
Options=选项(&O)
Always On Top=保持在顶层(&A)
Vertical Split=窗格垂直并列(&S)
Line End Characters=设置换行符(&L)
CR + LF=CR + LF(&+)
CR=CR(&C)
LF=LF(&L)
Convert Line End Characters=转换换行符(&C)
Change Indentation Settings=更改缩排设置(&T)
Use Monospaced Font=使用等宽字体(&M)
Open Local Options File=打开 Local Options 文件(&O)
Open User Options File=打开 User Options 文件(&U)
Open Global Options File=打开 Global Options 文件(&G)
Open Abbreviations File=打开 Abbreviations 文件(&B)
# Language menu
Language=语言(&L)
# Buffers menu
Buffers=缓冲区文档(&B)
Previous=上一个文档(&P)
Next=下一个文档(&N)
Close all=全部关闭(&C)
# Help menu
Help=帮助(&H)
About Sc1=关于 SciTE4AutoHotkey Lite(&S)
About SciTE=关于 SciTE4AutoHotkey(&A)
# Dialogs
# Generic dialog
OK=确定
Cancel=取消
Yes=是
No=否
# About dialog
About SciTE=关于 SciTE4AutoHotkey
# This is to add something like: Swahili translation 1.41.1 by Neil Hodgson
TranslationCredit=Chinese translation v1.43-1.74 by\n Chii Liao\n Daniel Lin\n Edward Hsieh\n Gong Weizheng\n Linnchord\n Calon Xu\n emlvvh
Contributors:=
# Open, Save dialogs
Open File=打开文件
Save File=保存文件
Save File As=另存为...
Export File As HTML=导出为 HTML 文件
Export File As RTF=导出为 RTF 文件
Save Current Session=保存当前打开的文件为文件列表
Custom Filter=自定义文件类型
# Find in Files dialog
#Find in Files=在眾檔中尋找
Find what:=输入查找字符(&N)
Files:=文件(&I)
#Find=
# Go To dialog
Go To=跳至(&G)
Destination Line Number:=目的行号(&D)
Current line:=当前行号
Last line:=前一次行号
# Indentation Settings dialog
Indentation Settings=缩排设置
Tab Size:=制表符宽度(&T)
Indent Size:=缩进宽度(&I)
Use tabs:=使用制表符(&U)
# Replace and Find dialogs
Replace=替换(&R)
#Find=
Find what:=输入查找字符(&N)
Replace with:=替换为(&P)
Match whole word only=全字符匹配(&W)
Match case=区分大小写(&C)
Regular expression=使用正则表达式(reg. exp.)(&E)
Wrap around=循环查找(&O)
Transform backslash expressions=使用反斜线(&B)
Find Next=查找下一个(&F)
Replace All=全部替换(&A)
Replace in Selection=在选取文字中替换(&S)
#Close=
Direction=查找方向
Reverse direction=反向查找
Up=向上
Down=向下
# Parameters dialog
Execute=执行
Set=设置(&S)
# Other UI strings
Untitled=无标题
# Properties used in global options
Text=纯文本
All Source=源代码
All Files (*.*)=所有文件 (*.*)
# Messages
# Messages may contain variables such as file names or search strings indicated
# by ^0 which are replaced by values before display. ^1, ^2, ... may be used in the future.
Can not find the string '^0'.=找不到 '^0'。
Find string must not be empty for 'Replace All' command.=全部替换时查找内容不能空白。
Selection must not be empty for 'Replace in Selection' command.=在选取的文字中替换时一定要先选取文字。
No replacements because string '^0' was not present.=没有找到字符 '^0',未完成替换。
Could not open file '^0'.=无法打开 '^0'。
Could not save file '^0'.=无法保存 '^0'。
Save changes to '^0'?=文件已被更改,是否要保存为 '^0'?
Save changes to (Untitled)?=文件已被更改,是否保存为 无标题 ?
The file '^0' has been modified. Should it be reloaded?=文件 '^0'已被更改过,是否重新载入?
Bad file.=损坏文件。
Failed to create dialog box: ^0.=无法开启 ^0 对话框。
Can not start printer document.=无法打印。
URI '^0' not understood.=不能解析 '^0' URI。
Invalid directory '^0'.=无效的目录/文件夹 '^0'。
# 1.42
Directory:=目录(&D)
Wrap=自动换行(&W)
Hide=隐藏(&H)
Check if already open=检查文件是否已经打开(&H)
# 1.43
Find string must not be empty for 'Replace in Selection' command.=在选取的文字中替换时查找内容不能为空白。
List Macros=列出所有宏
Run Current Macro=执行当前宏
Record Macro=录制宏
Stop Recording Macro=停止录制宏
SciTE4AutoHotkey Help=SciTE4AutoHotkey 文档(&S)
Sci4AutoHotkey Lite Help=SciTE4AutoHotkey Lite 帮助
Edit Properties=编辑选项
Wrap Output=输出时自动换行(&P)
# 1.44
Read-Only=只读(&R)
READ=读入
# 1.46
As TeX=为 TeX 文件
Export File As TeX=导出为 Tex 文件
Save a Copy=保存副本(&P)
# 1.47
As LaTeX=为 LaTeX 文件(&L)
Export File As LaTeX=导出为 TeX 文件
Encoding=编码
8 Bit=8位元
UCS-2 Big Endian=
UCS-2 Little Endian=
UTF-8=
# 1.49
Save All=全部保存(&S)
Browse=浏览(&B)
Select a folder to search from=选择要查找的目录/文件夹
UTF-8 Cookie=
# 1.50
Insert Abbreviation=插入缩略语(&I)
Abbreviation:=缩略语:
Insert=插入
Mark All=标记搜索结果(&M)
# 1.51
In Selection=在选定区域
Paragraph=段落(&G)
Join=合并(&J)
Split=分割(&S)
# 1.52
Block comment variable '^0' is not defined in SciTE *.properties!=行首的注释符号 '^0' 没有在 SciTE *.properties 中定义!
Box comment variables '^0', '^1' and '^2' are not defined in SciTE *.properties!=区块首尾和其中各行首的注释符号 '^0' 、 '^1' 、 '^2' 没有在 SciTE *.properties 中定义!
Stream comment variables '^0' and '^1' are not defined in SciTE *.properties!=区块首尾的注释符号 '^0' 及 '^1' 没有在 SciTE *.properties 中定义!
The file '^0' has been modified outside SciTE. Should it be reloaded?=文件 '^0' 已经被其他程序修改过,是否要重新载入?
As PDF=为 PDF 文件(&P)
Export File As PDF=导出为 PDF 文件
# 1.53
Version=
by=
#1.54
Incremental Search=即输即查(&L)
Search for:=即输即查
#1.55
Could not save file '^0'. Save under a different name?=无法保存 '^0' 文件,是否更名另存?
#1.56
As XML=为 XML 文件(&X)
Export File As XML=导出为 XML 文件
#1.57
Destination Line:=目的行(&D)
Column:=目的栏(&C)
#1.58
Replacements:=替换:
Open Files Here=在此打开文件(&H)
#1.59
#1.60
#1.61
File '^0' is ^1 bytes long,\nlarger than the ^2 bytes limit set in the properties.\nDo you still want to open it?=文件 '^0' 的长度为 ^1 字节,\n超过了 properties 文件中\n ^2 字节的限制,您仍要打开\n它吗?
Open Lua Startup Script=打开 Lua Startup Script
All Files (*)=所有文件(*)
Hidden Files (.*)=隐藏文件(.*)
#1.62
Show hidden files=显示隐藏文件
#1.63
Replace in Buffers=在缓冲区中替换(&U)
Find string must not be empty for 'Replace in Buffers' command.=在缓冲区中替换时查找内容不能为空。
Search only in this style:=仅以此样式查找:
#1.67
Duplicate=重复当前行(&D)
#1.72
Convert=转换(&C)
#1.73
Code Page Property=系统内码
UTF-8 with BOM=带 BOM 的 UTF-8
Open Directory Options File=打开 Directory Options 文件(&D
保存为locale.properties并放在SciTe目录下,关闭SciTE并重启即可
在这里插入图片描述
LuaStudio
1、下载:集成编译环境LuaStudio官网
2、安装:
选择简体中文
下一步,安装
购买软件的话需 : 帮助——》注册与授权
二、Lua小测试(以SciTE为例)
打开新下载的SciTE,选择options->open lua.properties
在里面的末尾处进行修改
将
#compatible with LuaBinaries for Lua 5.1; will work on both platforms.
command.compile.*.lua=luac5.1 -o "$(FileName).luc" "$(FileNameExt)"
#Lua 5.1
command.go.*.lua=lua51 "$(FileNameExt)"
改为
#compatible with LuaBinaries for Lua 5.1; will work on both platforms.
command.compile.*.lua=lua -e "io.stdout:setvbuf 'no'" "$(FileNameExt)"
#Lua 5.1
command.go.*.lua=lua "$(FileNameExt)"
修改完后一定要保存,若忽视这一步,则会发生:
通过前面的修改可以知道指令lua=luac5.1 -o改为了lua -e,所以上面的错误是无法识别过去的编码指令,将其替换掉新的即可
同时在Ctrl+N新建一个文件,里面输入
print("hello wordl")
print("Lua is the best scripting language in the world")
保存为xxx.lua
再按F5运行(或者在tools里面选择手动编译也行)
当然你也可以在右边的控制台输入命令:lua "xxx.lua"也可以使其编译并运行。