脚本是纯文本文件,允许您向游戏添加自定义的动态行为。您可以使用脚本触发游戏内事件、响应玩家输入、保存玩家数据、创建排行榜、生成敌人、控制 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)) --> string
Luau 有全局和局部 作用域,但几乎总是更好地使用 local 关键字局部声明变量和函数:
local logMessage = "用户有超过 10 件物品!"
local function printMessage()
print(logMessage)
end
printMessage() --> 用户有超过 10 件物品!
Luau 使用 nil 来表示不存在或无, 在条件语句中评估为 false:
local messageToUserprint(messageToUser) --> nilprint(type(messageToUser)) --> nilif messageToUser then-- 语句评估为 falseend
正如您可能已经注意到的,-- 开始单行注释。 --[[]] 创建块注释:
--[[
立即关闭宇宙月光射线。
应仅在午夜山地标准时间的 15 分钟内调用,以避免对宇宙月光射线造成损坏。
]]
local function stopCosmicMoonRay()
-- 稍后添加,这可能很重要
end
表 是数组和字典的通用术语。数组是基于 1 而非基于 0,因此第一个项目是 [1]。您使用一对花括号声明数组和字典:
local myArray = {"薯片", "气泡水", "沙拉酱"}local myDictionary = {零食 = "薯片",饮料 = "气泡水",蘸酱 = "沙拉酱"}print(myArray[1]) --> 薯片print(myDictionary.蘸酱) --> 沙拉酱
您可以使用 for 循环通过 ipairs() 函数迭代数组,使用 pairs() 函数迭代字典,但 Luau 也允许您省略这些函数以提高语法的整洁性:
for index, value in ipairs(myArray) do -- 标准 Luaprint(index, value)endfor key, value in pairs(myDictionary) do -- 标准 Luaprint(key, value)endfor key, value in myDictionary do -- Luau 广义迭代print(key, value)end
您的第一个脚本
在 Roblox Studio 中,悬停于 资源管理器 窗口中的 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 中,向 资源管理器 窗口的 ReplicatedStorage 添加一个脚本并将其重命名为 OhNo。
向文件中添加以下代码:
print("你好,脚本类型和位置!")注意输出与您运行 第一个脚本 时并无不同。
要了解脚本未运行的原因,请查看 脚本类型和位置。