這個項目是使用 for 循環的一個實際例子。對於這座橋,玩家將觸摸一個按鈕,讓一座橋在有限的時間內可行走,然後橋會消失。要創建計時器並向玩家顯示剩餘時間,您將使用 for 循環。
設置項目
這座橋可以包含在任何有運動挑戰的 Roblox 項目中,例如 obby。
創建零件
找一個可以建造橋的地方,比如河流或 obby 中的大缺口。創建三個 固定 的零件,如下所示。
- TimerDisplay
- Bridge
- ButtonBridge

當不活動時,橋將是半透明的。為此,選擇 Bridge 並更改其屬性。
- Transparency = 0.8
- CanCollide = False
創建計時器顯示
當玩家穿過橋時,將需要看到橋消失前剩下多少秒。顯示圖像或文本的一種方法是將一個名為 Surface GUI 的對象添加到一個零件上。Surface GUIs 也可以用來創建遊戲內標誌、自訂健康條和庫存系統。本教程將快速介紹這一點,但可以在 Tutorials 部分找到更多信息。
選擇 TimerDisplay 並添加一個 SurfaceGui。然後,將其作為 Surface Gui 的子對象,添加 TextLabel。

選擇 Surface GUI。在屬性中,進行以下更改:
- 更改 Face 以便您可以在計時器的前面看到文本標籤,玩家在那裡觀看。
選擇 TextLabel。在屬性中,進行以下更改:
- 將 Size 設置為 {1, 0},{1, 0}。
- 將 TextScaled 設置為 true。
- 將 Text 設置為空白。文本將使用腳本進行更新。
設置腳本
現在計時器已就位,創建一個腳本來控制橋並向玩家顯示倒計時數字。
在 Bridge 部分,添加一個名為 TimedBridge 的新腳本。在該腳本中,創建以下變量。
local bridge = script.Parentlocal button = workspace.ButtonBridgelocal timerText = workspace.TimerDisplay.SurfaceGui.TextLabel-- 桥保持坚固的时间local timerDuration = 5
編寫觸控互動
要使用這座橋,您需要創建兩個函數。一個函數將使橋可行走並顯示計時器。另一個函數將用於監聽玩家是否觸摸啟動橋的按鈕。
創建一個名為 startTimer() 的新函數,並在其中放入一個 print 語句。您將使用 print 語句來測試您的代碼。
local timerDuration = 5local function startTimer()print("倒計時開始")end編寫一個名為 buttonPressed() 的函數來檢查是否有人體觸摸按鈕。該函數應接受一個參數 partTouched,然後在檢測到該部分中的 humanoid 時有一個空的 if 語句。
local function startTimer()print("倒計時開始")endlocal function buttonPressed(partTouched)local character = partTouched.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenendend要啟動計時器,在 if 語句中調用 startTimer() 函數。
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenstartTimer()endend在 buttonPressed() 函數的末尾,將 buttonPressed() 函數連接到按鈕的 Touched 事件。
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid thenstartTimer()endendbutton.Touched:Connect(buttonPressed)運行項目。觸摸該部分,並在輸出窗口檢查以查看 print 語句。
故障排除提示
此時,如果橋的工作方式不如預期,請嘗試以下之一。
問題:顯示錯誤信息:"... is not a valid member of workspace"。
- 在 TimedBridge 腳本中,檢查所有零件的拼寫是否與在資源管理器中的顯示一致。
問題:無法看到這些零件。
- 確保所有三個零件都已固定。
- 檢查橋的 Transparency 屬性。
創建計時器
每當玩家站在橋上時,startTimer() 將使橋可行走並啟動計時器。一旦計時器達到 0,橋將變得不可行走,導致任何不夠快的人掉落。
使橋可行走
首先,腳本需要使橋堅固,即可碰撞,然後啟動計時器直到使其變為不可行走。
要使橋可行走,在 startTimer() 中,將橋的 Transparency 屬性更改為 0(不透明),將 CanCollide 屬性更改為 true。
local function startTimer()-- 使橋可見且可行走bridge.Transparency = 0bridge.CanCollide = trueend要創建計時倒計時計時器,創建一個 for 循環,值如下。
- 控制變量:命名為 count,設置為 timerDuration。
- 結束:0
- 增量:-1
local function startTimer()-- 使橋可見且可行走bridge.Transparency = 0bridge.CanCollide = truefor count = timerDuration, 0, -1 doendend要向玩家顯示計時器,將 timerText 中的文本更改為顯示 count,方法是輸入 timerText.Text = count。每次 for 循環通過一個迭代時,它將顯示計時器中的下一個數字。
for count = timerDuration, 0, -1 dotimerText.Text = countend使用 task.wait 函數讓 for 循環每次僅運行一次。
for count = timerDuration, 0, -1 dotimerText.Text = counttask.wait(1)end運行體驗。當您觸摸按鈕時,橋應該出現,計時器將開始,然後完成。
防止橋重新啟動
但請注意,如果您在按鈕上四處移動,計時器將不斷重新啟動。
這是因為每次您觸摸按鈕時都會調用 for 循環並從頭開始。要防止計時器不斷重新啟動,您需要添加一個布林值,一種類型的變量,來控制是否可以再次調用 startTimer()。
布林值 與其他變量的寫法相同,但它們只能設置為 true 或 false。在這種情況下,腳本將使用布林值檢查計時器當前是否正在運行,以決定是否啟動。
在您的腳本頂部,在變量下方創建一個名為 timerActive 的變量,並將其設置為 false,因為還沒有任何人按下按鈕。
local timerDuration = 5local timerActive = falselocal function startTimer()確保計時器僅在 timerActive 布林值為 false 時啟動,在 buttonPressed() 的 if 語句中添加第二個條件。
local function buttonPressed(otherPart)local character = otherPart.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid and timerActive == false thenstartTimer()endend為了使 startTimer() 在計時器運行之前不再運行,將布林值 timerActive 設置為 true。
local function startTimer()timerActive = truebridge.Transparency = 0bridge.CanCollide = true在 startTimer() 函數中,在 for 循環之後,將橋恢復到其原始屬性,將橋的透明度更改為 0.8,將 CanCollide 設置為 false。
local function startTimer()timerActive = truebridge.Transparency = 0bridge.CanCollide = true-- 倒數計時的 for 循環for count = timerDuration, 0, -1 dotimerText.Text = counttask.wait(1)end-- 使橋不可行走bridge.Transparency = 0.8bridge.CanCollide = falseend最後一件要重置橋的事情是將 timerText 更改為空字符串,就像原來那樣。然後,將 timerActive 布林值設置為 false。
bridge.Transparency = 0.8bridge.CanCollide = falsetimerText.Text = ""timerActive = false測試遊玩,確保橋可以多次使用。
完整的計時橋腳本
local bridge = script.Parent
-- 在資源管理器中獲取按鈕
local button = workspace.ButtonBridge
-- 獲取顯示部分
local timerPart = workspace.TimerDisplay
-- 獲取顯示計時器的文本
local timerText = timerPart.SurfaceGui.TextLabel
-- 玩家必須穿過橋的時間
local timerDuration = 5
local timerActive = false
local function startTimer()
print("倒計時開始")
timerActive = true
bridge.Transparency = 0
bridge.CanCollide = true
-- 倒數計時的 for 循環
for count = timerDuration, 0, -1 do
timerText.Text = count
task.wait(1)
end
-- 使橋不可行走
bridge.Transparency = 0.8
bridge.CanCollide = false
timerText.Text = ""
timerActive = false
end
local function buttonPressed(partTouched)
local character = partTouched.Parent
local humanoid = character:FindFirstChildWhichIsA("Humanoid")
print("部件被觸摸")
if humanoid and timerActive == false then
print("開始計時")
startTimer()
end
end
button.Touched:Connect(buttonPressed)
總結
循環可以與不同的互動方式結合創造有趣的遊戲時刻。在本教程中,創建了一座用作倒計時的計時橋。在倒計時期間,玩家有有限的時間穿過橋。