pairs 和 ipairs

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

許多腳本經常需要遍歷字典或數組。但有時,您可能不知道這些數據結構的開始和結束。例如,玩家的字典可能正在變化,或者玩家可能擁有不同大小的數組庫存。

在這些情況下,您可以使用 pairs()ipairs()。這些可以與 for 循環結合使用,遍歷每個元素,無需提前知道開始和結束點。

本文將涵蓋如何使用它們,並提供一個實用的腳本範例,在烹飪遊戲中追蹤餐廳訂單。

字典和 pairs()

pairs() 用於 字典。下面是示例。


local myDictionary = {
["藍色玩家"] = "Ana",
["金色玩家"] = "Binh",
["紅色玩家"] = "Cate",
}
for key, value in pairs(myDictionary) do
print(key .. " 是 " .. value)
end

pairs() 可以用於操作字典元素的鍵、值,或兩者。下面的 for 循環中,第一個變量是鍵。第二個變量是值。您想操作的字典傳遞給 pairs()


local inventory = {
["金磚"] = 43,
胡蘿蔔 = 3,
火把 = 2,
}
print("您擁有:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

執行後,代碼將打印以下內容:


您擁有:
43 金磚
3 胡蘿蔔
2 火把

數組和 ipairs()

ipairs() 用於 數組ipairs() 中的 "i" 代表 "索引"。將 ipairs() 與數組結合使用,可以處理有序的值,如排行榜。下面是示例。


local players = {"Ali", "Ben", "Cammy"}
for playerRank, playerName in ipairs(players) do
print("贏家 #" .. playerRank .. " 是 " .. playerName)
end

執行後,代碼將打印以下內容:


贏家 #1 是 Ali
贏家 #2 是 Ben
贏家 #3 是 Cammy

實踐 - 餐廳湯模擬器

讓我們為餐廳模擬器製作一些湯,玩家可以從可能的湯原料列表中挑選。原料將作為鍵存儲,值將初始設置為 false,以便玩家僅獲取他們選擇的內容。

使用 pairs() 來查看所選的內容,然後使用 ipairs() 打印原料列表。

  1. 創建一個名為 menu 的新 字典。添加 3 - 5 個鍵值對,其中鍵是原料,值為 false。


    local menu = {
    卷心菜 = false,
    牛肉 = false,
    番茄 = false,
    麵條 = false,
    }
  2. 在菜單字典下方,添加一個 空數組,稍後將用客戶的選擇填充。


    -- 客戶的湯
    local selectedIngredients = {}
  3. 使用 pairs() 檢查字典中的每個原料是否標記為 true 或 false。如果為 true,則將原料添加到湯中。


    -- 客戶的湯
    local selectedIngredients = {}
    -- 將客戶的選擇添加到他們的湯中
    for menuChoice, value in pairs(menu) do
    if value then
    table.insert(selectedIngredients, menuChoice)
    end
    end
  4. 將訂單重複告訴客戶。在腳本中,編碼以下內容。

    • 檢查 selectedIngredients 中是否有菜單項。如果有,打印 "您點的湯有:"
    • 使用 ipairs() 遍歷 selectedIngredients 數組,打印每個原料。
    • 測試通過將至少一個菜單項更改為 true。

    -- 打印來自 "selectedIngredients" 的湯訂單
    if #selectedIngredients > 0 then
    print("您點的湯有:")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    end
  5. 在檢查菜單項的 if 語句中,添加一個 else 條件,告訴客戶如果沒有選擇任何原料。


    if #selectedIngredients > 0 then
    print("您點的湯有:")
    for index, soupIngredient in ipairs(selectedIngredients) do
    print(soupIngredient)
    end
    else
    print("沒有選擇任何內容。您不餓嗎?")
    end

可選挑戰

以下是一些挑戰,適用於以不同方式使用 pairs 和 ipairs。嘗試看看您是否能夠構建出這些代碼。

挑戰:創建一個服務員 NPC 而不是使用輸出窗口,使用 引介數組 中的 NPC 創建一個服務員來接受客戶訂單。

挑戰:允許玩家下訂單 允許玩家通過接觸物理部件(例如接近提示)來選擇原料。更多信息,請參見 接近提示

進階挑戰:製作我的湯模擬器 創建一個餐廳模擬器,玩家是廚師!玩家將必須組合原料以配合服務員給出的訂單。

  1. 創建 3 - 5 種不同原料的遊戲內道具。
  2. 創建 3 - 5 種使用字典的食譜,與本課程中的食譜類似。
  3. 創建一個數組來保存所有食譜。
  4. 隨機選擇一個食譜,並使用 NPC 告訴玩家原料是什麼。
  5. 創建一個新的字典,根據玩家觸碰的道具原料製作食譜。
  6. 將玩家的食譜與 NPC 選擇的食譜進行比較。
  7. 增加挑戰,添加額外的條件,例如計時器。
©2026 Roblox Corporation、Roblox、Roblox 標誌及 Powering Imagination 是我們在美國及其他國家地區的部分註冊與未註冊商標。