腳本是純文本文件,允許您為遊戲添加自定義的動態行為。您可以使用腳本來觸發遊戲內事件、響應玩家輸入、保存玩家數據、創建排行榜、生成敵人、控制 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 = {snack = "薯片",drink = "氣泡水",dip = "莎莎醬"}print(myArray[1]) --> 薯片print(myDictionary.dip) --> 莎莎醬
您可以使用 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 中,將鼠標懸停在 Explorer 窗口的 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))確保 Output 窗口是打開的。
運行您的遊戲 並注意輸出:
hel (x2)oworld
讓自己適應
適應新的開發環境的一個重要部分是配置它以滿足您的需求並理解您擁有的工具:
- 腳本分析 窗口顯示錯誤和警告摘要,但您可能會發現其效用有限;腳本編輯器在您輸入時已經高亮顯示這些問題。
有關在腳本編寫中配置 Studio 的更多信息,請看 腳本編輯器。
您的第二個腳本
在 Roblox Studio 中,在 Explorer 窗口中添加一個腳本到 ReplicatedStorage,並將其重命名為 OhNo。
在文件中添加以下代碼:
print("Hello 腳本類型和位置!")注意輸出的結果與您運行的 第一腳本 沒有任何不同。
要了解為什麼腳本沒有運行,請參見 腳本類型和位置。