脚本是纯文本文件,允许您为游戏添加自定义的动态行为。您可以使用脚本触发游戏内事件、响应玩家输入、保存玩家数据、创建排行榜、生成敌人、控制 NPC 行为等等。
Luau
Roblox 脚本使用 Luau 编程语言,该语言源自 Lua 5.1。
- 与 Lua 5.1 相比,Luau 增加了性能增强和许多有用的功能,包括可选的类型系统、字符串插值和表的广义迭代。
- 所有有效的 Lua 5.1 代码都是有效的 Luau 代码,但反之则不然。
大多数关于 Lua 的书籍和在线资源仍然适用于 Luau。有关差异的详细总结,请参阅 Luau 文档中的 兼容性。有关语言语法,请参阅 Luau 参考。
Luau 基础
Luau 是逐渐类型化的,因此在创建变量时不需要指定类型。您可以使用 type() 来检查对象类型:
logMessage = "用户拥有超过 10 个物品!"
print(logMessage) --> 用户拥有超过 10 个物品!
print(type(logMessage)) --> stringLuau 有全局和局部 作用域,但几乎总是更好地使用 local 关键字声明变量和函数:
local logMessage = "用户拥有超过 10 个物品!"
local function printMessage()
print(logMessage)
end
printMessage() --> 用户拥有超过 10 个物品!Luau 使用 nil 来表示不存在或无,条件语句中将其评估为 false:
local messageToUser
print(messageToUser) --> nil
print(type(messageToUser)) --> nil
if messageToUser then
-- 语句评估为 false
end正如您可能注意到的,-- 开始一行注释。--[[]] 创建一个块注释:
--[[
立即关闭宇宙月光射线。
应仅在午夜山地标准时间的 15 分钟内调用,以避免对宇宙月光射线造成损害。
]]
local function stopCosmicMoonRay()
-- 稍后添加,这可能很重要
end表 是数组和字典的通用术语。数组是基于 1 的,而不是基于 0 的,因此第一个项目是 [1]。您可以使用一对大括号声明数组和字典:
local myArray = {"薯片", "气泡水", "莎莎酱"}
local myDictionary = {
snack = "薯片",
drink = "气泡水",
dip = "莎莎酱"
}
print(myArray[1]) --> 薯片
print(myDictionary.dip) --> 莎莎酱您可以使用 for 循环和 ipairs() 函数遍历数组,使用 pairs() 函数遍历字典,但 Luau 还允许您省略这些函数以获得更简洁的语法:
for index, value in ipairs(myArray) do -- 标准 Lua
print(index, value)
end
for key, value in pairs(myDictionary) do -- 标准 Lua
print(key, value)
end
for key, value in myDictionary do -- Luau 广义迭代
print(key, value)
end您的第一个脚本
在 Roblox Studio 中,将鼠标悬停在 Explorer 窗口中的 ServerScriptService 上,然后单击 +。
选择 脚本 以添加新脚本。
右键单击脚本并将其重命名为 HelloScript。
双击脚本以在 脚本编辑器 中打开它。
将以下代码添加到文件中:
local helloArray = {"h", "e", "l", "l", "o"}local worldArray = {"w", "o", "r", "l", "d"}for index, value in helloArray doprint(value)endprint(table.concat(worldArray))确保 输出 窗口是打开的。
运行您的游戏 并注意输出:
hel (x2)oworld
适应环境
适应新开发环境的一大部分是配置它以满足您的需求并理解您手头的工具:
- 脚本分析 窗口显示错误和警告的摘要,但您可能会发现其实用性有限;脚本编辑器在您输入时已经突出显示了这些问题。
有关配置 Studio 以进行脚本编写的更多信息,请参阅 脚本编辑器。
您的第二个脚本
在 Roblox Studio 中,在 Explorer 窗口中向 ReplicatedStorage 添加一个脚本并将其重命名为 OhNo。
将以下代码添加到文件中:
print("你好,脚本类型和位置!")注意输出与您运行 第一个脚本 时没有什么不同。
要了解为什么脚本没有运行,请参阅 脚本类型和位置。