← 所有教程
第 2 篇教程

做出你的第一个 tycoon

Dropper 会掉出方块,Conveyor 会把它们运走,Collector 会把它们变成现金,还有一个按钮可以买第二个 Dropper。

免费60 分钟 · 新手 · Roblox Studio
1
第 1 / 9

设置场景

  1. 打开 Roblox Studio,点击 New Experience,选择 Baseplate 模板。
  2. 在 Explorer 里把鼠标移到 Workspace 上,点击 + 并添加一个 Folder。把它命名为 Tycoon。
  3. 你在这篇教程里做的所有东西,都放进这个文件夹。这样 Explorer 就会很整齐。

更多细节

  • Baseplate 模板在开始页面的模板列表里。
  • 点 + 以后会打开一个列表。输入 Folder 这个词可以很快找到它,然后点它。
  • 要给文件夹改名,点它一下,按 F2,输入 Tycoon,然后按 Enter。
  • 在 Mac 上,每当教程说 Ctrl 的时候,都改用 Cmd 键。
小提示. 每个 Part 一创建出来,就马上给它改名。脚本是按名字来找 Part 的,所以还叫 Part 的那个就不能用。
这一步我做不出来

先检查这三件事

  • 每个零件和脚本的名字都要和教程里的完全一样,大小写也要一样。
  • 脚本要放在正确的物体里面。看一看代码框上面的标签。
  • 从 Window 菜单里打开 Output 窗口。红色的文字会告诉你哪个脚本、哪一行有问题。

还是不行?给我们写信 →

2
第 2 / 9

给每位玩家现金

  1. 把鼠标移到 ServerScriptService 上,点击 + 并添加一个 Script。把它命名为 Leaderstats。
  2. 删掉里面已有的那一行,然后粘贴下面的代码。
  3. 按 Play。你的名字会出现在玩家列表里,旁边是 Cash 0。
ServerScriptService > Leaderstats
local Players = game:GetService("Players")

Players.PlayerAdded:Connect(function(player)
	local stats = Instance.new("Folder")
	stats.Name = "leaderstats"
	stats.Parent = player

	local cash = Instance.new("IntValue")
	cash.Name = "Cash"
	cash.Value = 0
	cash.Parent = stats
end)

每一部分的作用

  • PlayerAdded 会为每一位加入的玩家各运行一次。
  • 名为 leaderstats 的文件夹是特殊的。Roblox 会把里面的值显示在玩家列表中。
  • IntValue 保存一个整数。这里它保存的是玩家的现金。

更多细节

  • ServerScriptService 在 Explorer 的列表里。里面的脚本在服务器上运行,玩家改不了它们。
  • 脚本会在新的标签页里打开。点一下代码里面,按 Ctrl+A,再按 Ctrl+V,替换掉所有内容。
  • 点一下写着你的场景名字的标签页,就回到你的世界了。
  • 玩家列表在游戏的右上角。按 F5 开始,按 Shift+F5 停止。
这一步我做不出来

先检查这三件事

  • 每个零件和脚本的名字都要和教程里的完全一样,大小写也要一样。
  • 脚本要放在正确的物体里面。看一看代码框上面的标签。
  • 从 Window 菜单里打开 Output 窗口。红色的文字会告诉你哪个脚本、哪一行有问题。

还是不行?给我们写信 →

3
第 3 / 9

做出 dropper

  1. 在 Tycoon 文件夹里添加一个 Part。把 Size 设为 4, 1, 4,打开 Anchored,并命名为 Dropper。
  2. 用 Move 工具(Ctrl+2)把它抬到离地面大约 10 studs 的高度。
  3. 给 Dropper 添加一个 Script,并粘贴下面的代码。
  4. 按 Play。每隔 2 秒就会有一个黄色的方块掉下来。
Dropper > Script
local Debris = game:GetService("Debris")
local dropper = script.Parent

while true do
	task.wait(2)

	local cube = Instance.new("Part")
	cube.Name = "Cube"
	cube.Size = Vector3.new(1.5, 1.5, 1.5)
	cube.Color = Color3.fromRGB(255, 200, 60)
	cube.Position = dropper.Position - Vector3.new(0, 2, 0)
	cube.Parent = workspace

	Debris:AddItem(cube, 20)
end

每一部分的作用

  • Instance.new 用代码创建一个新的 Part。
  • Position 把方块放在 dropper 下面 2 studs 的地方。
  • Debris 会在 20 秒后移除每个方块,所以旧方块不会越堆越多。

更多细节

  • 要把零件放进文件夹,就在 Explorer 里把它的名字拖到 Tycoon 这个名字上。
  • 用 Move 工具,把绿色箭头向上拖。Properties 里的 Position 栏中,中间那个数字就是高度。
  • 方块会出现在投放器下面 2 studs 的地方,然后掉下去。如果投放器太低,方块就会堆在它下面。
  • 游戏开始 2 秒后,第一个方块就会出现。
常见错误. 没有方块出现:检查脚本是否在 Dropper 里面,以及 Dropper 是否已经 Anchored。
这一步我做不出来

先检查这三件事

  • 每个零件和脚本的名字都要和教程里的完全一样,大小写也要一样。
  • 脚本要放在正确的物体里面。看一看代码框上面的标签。
  • 从 Window 菜单里打开 Output 窗口。红色的文字会告诉你哪个脚本、哪一行有问题。

还是不行?给我们写信 →

4
第 4 / 9

加上传送带

  1. 添加一个 Part,把 Size 设为 6, 1, 30,打开 Anchored,并命名为 Conveyor。
  2. 把它放在地面上,让它的一端正好在 dropper 的下面。
  3. 给 Conveyor 添加一个 Script,并粘贴下面的代码。
  4. 按 Play。方块会落在传送带上,然后滑着往前走。
Conveyor > Script
local conveyor = script.Parent

conveyor.AssemblyLinearVelocity = conveyor.CFrame.LookVector * 8

每一部分的作用

  • AssemblyLinearVelocity 告诉 Roblox,这个 Part 上面的东西应该以多快的速度移动。
  • LookVector 是这个 Part 正面朝着的方向。数字 8 是速度,单位是每秒 8 studs。

更多细节

  • 每个零件都有一个正面。传送带会把方块推向它的正面。
  • 传送带长的那一边,也就是 30 studs 的那一边,必须背对投放器,朝向收集器要放的地方。
  • 传送带本身不会动。只有它上面的东西会滑动。
  • 如果方块从旁边掉下去,就把传送带做宽一点,或者把投放器移到传送带的中间。
常见错误. 方块往错误的方向滑:用 Rotate 工具(Ctrl+4)把传送带转 180 度。
这一步我做不出来

先检查这三件事

  • 每个零件和脚本的名字都要和教程里的完全一样,大小写也要一样。
  • 脚本要放在正确的物体里面。看一看代码框上面的标签。
  • 从 Window 菜单里打开 Output 窗口。红色的文字会告诉你哪个脚本、哪一行有问题。

还是不行?给我们写信 →

5
第 5 / 9

收集方块

  1. 在传送带的最远端添加一个 Part。把 Size 设为 6, 4, 1,打开 Anchored,把它设成绿色,并命名为 Collector。
  2. 让它像一堵墙一样立起来,这样方块就会撞到它。
  3. 给 Collector 添加一个 Script,并粘贴下面的代码。
  4. 按 Play。每个到达 collector 的方块,都会让 Cash 加 5。
Collector > Script
local Players = game:GetService("Players")
local collector = script.Parent

collector.Touched:Connect(function(hit)
	if hit.Name ~= "Cube" then return end
	hit:Destroy()

	for _, player in ipairs(Players:GetPlayers()) do
		local stats = player:FindFirstChild("leaderstats")
		if stats then
			stats.Cash.Value += 5
		end
	end
end)

每一部分的作用

  • 脚本会忽略所有名字不是 Cube 的东西。你的脚不算。
  • Destroy 会把方块从游戏里移除。
  • 这个循环会给服务器里的每一位玩家 5 点现金。每块地只有一位主人的 tycoon,是进阶课程的内容。

更多细节

  • Size 6, 4, 1 本来就是竖着的:宽 6,高 4,厚 1。把它横放在传送带的末端,就像一扇关着的门。
  • 它的下边缘应该碰到传送带,这样方块就不会从下面溜过去。
  • 要把它变成绿色,点 Properties 里的 Color 栏。
  • 测试一下:按 F5,看玩家列表。每有一个方块碰到墙,Cash 就会增加 5。
这一步我做不出来

先检查这三件事

  • 每个零件和脚本的名字都要和教程里的完全一样,大小写也要一样。
  • 脚本要放在正确的物体里面。看一看代码框上面的标签。
  • 从 Window 菜单里打开 Output 窗口。红色的文字会告诉你哪个脚本、哪一行有问题。

还是不行?给我们写信 →

6
第 6 / 9

准备第二个 dropper

  1. 选中 Dropper,按 Ctrl+D。把复制出来的那个命名为 Dropper2,把它移到第一个旁边,仍然在传送带的上方。
  2. 把 Dropper2 从 Workspace 拖进 ServerStorage。
  3. 它会从世界里消失。放在 ServerStorage 里的物体会在那里等着,直到有脚本把它们移回来。

更多细节

  • 复制品正好在原件上面。用 Move 工具把它往旁边拖,这样两个你都能看到。
  • 用 F2 给复制品改名。名字必须是 Dropper2,D 要大写,中间没有空格。
  • ServerStorage 在 Explorer 的列表里。把 Dropper2 这个名字拖到它上面。
  • 复制品里面的脚本也跟着一起过来了。你不需要再添加一次。
小提示. ServerStorage 里面的脚本不会运行。所以第二个 dropper 在有人买下它之前,会一直安安静静的。
这一步我做不出来

先检查这三件事

  • 每个零件和脚本的名字都要和教程里的完全一样,大小写也要一样。
  • 脚本要放在正确的物体里面。看一看代码框上面的标签。
  • 从 Window 菜单里打开 Output 窗口。红色的文字会告诉你哪个脚本、哪一行有问题。

还是不行?给我们写信 →

7
第 7 / 9

加上购买按钮

  1. 在传送带附近的地面上添加一个 Part。把 Size 设为 4, 1, 4,打开 Anchored,把它设成亮蓝色,并命名为 BuyDropper。
  2. 给 BuyDropper 添加一个 Script,并粘贴下面的代码。
  3. 要给按钮加上文字,把鼠标移到 BuyDropper 上,点击 + 并添加一个 BillboardGui。把它的 Size 设为 {0, 200}, {0, 50},把 StudsOffset 设为 0, 3, 0。
  4. 在 BillboardGui 里添加一个 TextLabel。把它的 Size 设为 {1, 0}, {1, 0},打开 TextScaled,并输入这段文字:Second dropper - 50
BuyDropper > Script
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")

local button = script.Parent
local PRICE = 50
local bought = false

button.Touched:Connect(function(hit)
	if bought then return end

	local player = Players:GetPlayerFromCharacter(hit.Parent)
	local stats = player and player:FindFirstChild("leaderstats")
	if not stats or stats.Cash.Value < PRICE then return end

	bought = true
	stats.Cash.Value -= PRICE
	ServerStorage.Dropper2.Parent = workspace
	button:Destroy()
end)

每一部分的作用

  • PRICE 是价格。改一改这个数字,按钮就会变便宜或变贵。
  • 脚本会检查碰到按钮的是不是真正的玩家,以及这位玩家的现金够不够。
  • 把 Dropper2 移进 workspace 就是把它打开。它的脚本会马上开始运行。

更多细节

  • 玩家是走到按钮上去购买的,所以把按钮放在地面上,方便走到。
  • 对于 Size 和 StudsOffset,在 Properties 里点这一栏,完全照着给出的样子输入数字,括号和逗号都要有,然后按 Enter。
  • Text 是 TextLabel 的一个属性。点 Text 栏,输入文字,然后按 Enter。
  • 标签飘在按钮上方。如果你看不到它,就把 StudsOffset 中间的数字调大。
这一步我做不出来

先检查这三件事

  • 每个零件和脚本的名字都要和教程里的完全一样,大小写也要一样。
  • 脚本要放在正确的物体里面。看一看代码框上面的标签。
  • 从 Window 菜单里打开 Output 窗口。红色的文字会告诉你哪个脚本、哪一行有问题。

还是不行?给我们写信 →

8
第 8 / 9

测试整个流程

  1. 按 F5。看着方块掉下来,坐上传送带,变成现金。
  2. 等到你有 50 点现金,然后踩上蓝色按钮。
  3. 第二个 dropper 出现了,按钮消失了,你的现金也涨得快了一倍。
  4. 按 Shift+F5 停止。如果哪里出了问题,从 Window 菜单里打开 Output 窗口,看看红色的文字。

更多细节

  • 需要 10 个方块,也就是至少 20 秒,才能攒到 50 现金。
  • 购买以后,Cash 会减少 50。这是对的。你为投放器付了钱。
  • 购买后按钮会被销毁,所以不能买两次。
  • 如果第二个投放器出现在错误的位置,就先停止游戏,把 Dropper2 从 ServerStorage 拖回 Workspace,移动它,再把它拖回 ServerStorage。
常见错误. Cash 一直不变:掉下来的东西必须命名为 Cube,要和 dropper 脚本里的完全一样。
这一步我做不出来

先检查这三件事

  • 每个零件和脚本的名字都要和教程里的完全一样,大小写也要一样。
  • 脚本要放在正确的物体里面。看一看代码框上面的标签。
  • 从 Window 菜单里打开 Output 窗口。红色的文字会告诉你哪个脚本、哪一行有问题。

还是不行?给我们写信 →

9
第 9 / 9

发布它

  1. 选择 File → Publish to Roblox。给游戏起一个名字,再写一段简短的介绍。
  2. 在 Creator Hub 网站上打开你的游戏,填写 Maturity 问卷。
  3. 把游戏设为 Public,然后把链接发给一位朋友。

更多细节

  • 第一次发布时,Studio 会问你要一个名字和一段介绍。点 Create。
  • Creator Hub 就是网站 create.roblox.com。用同一个账号登录,然后在列表里点你的游戏。
  • 游戏公开之前,Roblox 可能还会要求更多信息,比如对账号做年龄验证。页面会告诉你还缺什么。
  • 如果你不满 18 岁,请和家长一起完成这一步。
小提示. 现在进度还不会被保存。玩家一离开,现金就没了。保存数据是进阶课程的内容。
这一步我做不出来

先检查这三件事

  • 每个零件和脚本的名字都要和教程里的完全一样,大小写也要一样。
  • 脚本要放在正确的物体里面。看一看代码框上面的标签。
  • 从 Window 菜单里打开 Output 窗口。红色的文字会告诉你哪个脚本、哪一行有问题。

还是不行?给我们写信 →

现在自己改一改

  • 让每个方块值 10 点现金,而不是 5 点。
  • 再加一个第三个 dropper,价格是 200 点现金。
  • 让第二个 dropper 比第一个更快。你要改哪个数字?