让指令有位置
将普通 Script 放进 ServerScriptService,名称说明用途。
Roblox Studio · 第 3 课
在 ServerScriptService 创建第一个普通 Script,理解 print()、Output、local 变量和对象引用,用短代码安全修改 Part。
Course overview
前两课里,学生用 Move、Scale 和 Rotate 制作了静态场景。从这一课开始,我们给电脑写出能够按顺序执行的指令。Roblox 使用的脚本语言叫 Luau;日常常说 Lua,但在 Roblox 项目中,Luau 是更准确的名称。
本课强调一个可靠循环:写一小段代码,点击 Play,读取 Output,点击 Stop,只改一个问题,再次测试。短代码、早测试、读第一条错误,是后续所有脚本课都会重复的习惯。
将普通 Script 放进 ServerScriptService,名称说明用途。
print()、warn()、脚本名和行号共同帮助我们定位问题。
用 local 保存字符串、数字、布尔值和对象引用。

Learning route
每完成一小步,就测试一次。先说出你预计会看到什么,再用 Play 和 Output 检查,不用急着一次写完所有代码。
从 Lesson02 另存,准备一个 Anchored 的 Lesson03Part。
在 ServerScriptService 中创建 Lesson03_FirstScript。
通过 Playtest 在 Output 中看见 Hello, Roblox!。
分别保存 string、number 和 boolean。
用 WaitForChild 找到 Lesson03Part,再修改属性。
根据脚本名、行号和错误描述修复问题。
First script
普通 Script 放在 ServerScriptService 中,位置清楚,也便于在 Output 中识别服务器消息。创建后立刻重命名为 Lesson03_FirstScript,不要长期保留 Script、Script1 这样的默认名称。
双短横线 -- 后面是注释,它只帮助人阅读,不会执行。print() 会把括号中的内容发送到 Output,即使画面没有变化,也能证明脚本已经运行。
-- 第3课:第一个 Luau 脚本
print("Hello, Roblox!")
Local variables
变量像一个带名称的盒子:等号右边是要保存的值,左边是变量名。初学阶段使用 local 创建局部变量,作用范围更清楚。变量名采用 camelCase,例如 courseName、playerScore、newWidth。
string 保存文字,number 保存数值,boolean 只有 true 或 false。数字用 + 运算;字符串用 .. 连接。不要把文字和数字直接用 + 相加。
local courseName = "Roblox Studio"
local score = 10
local isReady = true
print(courseName)
print(score)
print(isReady)
Object reference
在 Workspace 中创建并准确命名 Lesson03Part,然后勾选 Anchored。workspace:WaitForChild("Lesson03Part") 会等待对象出现并返回它的引用;拿到引用后,就能通过点号访问 Name、Color、Size 等属性。
Playtest 期间的颜色和尺寸变化属于临时运行世界。点击 Stop 后通常会还原,这正是安全测试的价值:先验证行为,再决定是否在编辑状态永久修改。
local lessonPart = workspace:WaitForChild("Lesson03Part")
local newWidth = 14
lessonPart.Color = Color3.fromRGB(255, 170, 0)
lessonPart.Size = Vector3.new(newWidth, 2, 6)
print("已修改:", lessonPart.Name)
Debug loop
遇到红色消息时,固定处理顺序:先看最早的一条错误,再看脚本名和行号,点击 Stop,回到对应位置检查符号或名称,修复后重新 Play。后面的错误可能只是第一处语法问题引发的连锁结果。
例如字符串缺少右引号时,不要删掉整段代码;补上成对的英文引号,重新测试,确认 Output 不再出现 Malformed string。
-- 错误版本
local message = "Lesson 03
print(message)
-- 修复:给 Lesson 03 补上右引号
local fixedMessage = "Lesson 03"
print(fixedMessage)
Homework
用 gameTheme、levelCount、isComplete 分别保存文字、数字和布尔值。
每一条 print 都带有标签文字,让读者知道看到的值代表什么。
安全地修改 Lesson03Part 的 Color、Size 或 Transparency,再修复一个小错误。
Exit questions
位置清楚,便于管理服务器端脚本并在 Output 中识别其消息。
把信息发送到 Output,用来确认代码是否执行并观察数据。
local 创建局部变量;= 把右侧的值赋给左侧变量名。
后续错误可能由第一处语法错误连锁产生。