広告

【Roblox開発】Luaの基本:構文やコメントの記述について

Roblox

Roblox(ロブロックス)のゲーム開発のスクリプト言語に使われているLuaスクリプトに関する解説です。

ここではLuaプログラミングの基本となる構文やコメントの記述などについて説明しています。

記述における規約

予約語

以下のワードはLuaスクリプトの構文などに使用するためのワードのため、変数名などに使用することはできません。(アルファベット順)

andbreakdoelseelseifendfalseforfunctiongotoifinlocalnilnotorrepeatreturnthentrueuntilwhile

大文字と小文字の区別

Luaスクリプトでは大文字と小文字が区別される。上記のrepeatは予約語のため使用することができませんが、RepeatREPEATは異なる名前として扱うことができます。

また、_REPEATのように「アンダースコア+大文字で始まる名前」の使用は慣例として避けるよう推奨されます。

記号

以下の記号はLua構文で使用されるトークン(演算子などの字句要素)となっています。

+-*/%^#&~|<<>>//==~=<=>=<>=(){}[]::;:,......

Luaの基本構文

コメント

コメントはふたつのハイフン--で記述する。コメントは行末まで有効。コメント内は自由な文字列を記述可能です。

複数行のコメントはハイフン+2重ブラケット(角括弧)--[[]]で記述します。--[[がコメント開始の記述となり、対応する]]までがコメントアウトされます。

慣例として閉じカッコは--]]と記述されることもあります。

Robloxのサンプルプロジェクトのコードでは--[[--]]の記法が使われています。

サンプルコード:コメント

--これはコメントです。
--[[これもコメントです。]]
--[[
コメントは複数行に
記述することもできます。
--]]

ブロック

順番に実行される構文のひとまとまりをブロックと呼びます。

ブロックを区切るためにdo ... end文を使用することが可能です。doendの構文そのものに機能はありませんが、do文を使うことで処理の単位や区切りを明示して処理の流れを把握しやすくすることができます。

サンプルコード:do … end

do
  if connection then connection:disconnect() end
  contextActionService:UnbindAction("Reload")
  game.ReplicatedStorage:WaitForChild("ROBLOX_PistolUnequipEvent"):FireServer()
  hud.AmmoHud:TweenPosition(UDim2.new(1.5, 0, 0.95, 0), "InOut", "Quad", 0.3, true)
  runService:UnbindFromRenderStep("Sights")
  userInputService.MouseIconEnabled = true
  hud.Crosshair.Visible = false
  neck.C0 = oldNeckC0
  shoulder.C0 = oldShoulderC0
end

文の区切り/セミコロン

Luaスクリプトは分の区切りにセミコロン;を使うことができるが必須ではありません。セミコロンが記述されていない場合でも構文を自動的に解釈して処理されます。

ただし、関数の呼び出しなどの記述により文法の解釈があいまいになるケースがあります。

a = b + c
(print or io.write)('done')

上記の記述は以下の2通りの解釈が可能。

a = b + c(print or io.write)('done') --関数Cの引数
a = b + c; (print or io.write)('done') --b+cの実施後、無名関数の呼び出し

Roblox Studioでは上記構文はエラーとなります。

タイトルとURLをコピーしました