関数が作れるようになるとスマートで分かりやすいプログラムが書けるようになります。
登場する英単語
英単語 | 読み方 | 解説 |
---|---|---|
function | ファンクション | 「機能」 関数を作成する際に使用 |
return | リターン | 「戻る」 値を返すときに使用 |
チェックポイント
- 関数は必ず( )カッコカッコがついているのが特徴
local part = Instance.new("Part")
part.Shape = Enum.PartType.Ball
part.Name = "Ball"
part.Anchored = false
local x = math.random(-50,50)
local y = math.random(5,50)
local z = math.random(-50,50)
part.Position = Vector3.new(x,y,z)
part.Parent = game.Workspace
- 関数は「local function」で始まり、「end」で終わる
- その後に関数名が続き、( )カッコカッコとする
- パラメーターが1つもない場合でも( )カッコはつける
local function putBall()
local part = Instance.new("Part")
part.Shape = Enum.PartType.Ball
part.Name = "Ball"
part.Anchored = false
local x = math.random(-50,50)
local y = math.random(5,50)
local z = math.random(-50,50)
part.Position = Vector3.new(x,y,z)
part.Parent = game.Workspace
end
putBall()
- 値の受け渡しはパラメータを使用する
- パラメーターの変数名は自由
local function putPart(shape)
local part = Instance.new("Part")
part.Shape = shape
-- part.Name = "Ball"
part.Anchored = false
local x = math.random(-50,50)
local y = math.random(5,50)
local z = math.random(-50,50)
part.Position = Vector3.new(x,y,z)
part.Parent = game.Workspace
end
putPart(Enum.PartType.Ball)
putPart(Enum.PartType.Block)
putPart(Enum.PartType.Cylinder)
- 複数個のパラメーターが指定できる
- 値を返したい場合は「return」を使う
local function putPart(shape,pos)
local part = Instance.new("Part")
part.Shape = shape
-- part.Name = "Ball"
part.Anchored = false
part.Position = pos
part.Parent = game.Workspace
end
local function getPosition()
local x = math.random(-50,50)
local y = math.random(5,50)
local z = math.random(-50,50)
local pos = Vector3.new(x,y,z)
return pos
end
putPart(Enum.PartType.Ball,getPosition())
putPart(Enum.PartType.Block,getPosition())
putPart(Enum.PartType.Cylinder,getPosition())
- このように書くと、getPosition関数自体を渡すことになる
- 関数自体を渡すという処理は、次回、第18回の講座で登場する
putPart(Enum.PartType.Ball,getPosition)
ステップアップ
動画の方では行いませんでしたが、複数の値を返すこともできます。さらに多くの値を渡したい場合は、第22回の講座で登場するテーブルを使用します。
local function getPositionXYZ()
local x = math.random(-50,50)
local y = math.random(5,50)
local z = math.random(-50,50)
return x,y,z
end
local x,y,z = getPositionXYZ() -- 関数内のx,y,zと、ここのx,y,zは異なる変数なので、
local a,b,c = getPositionXYZ() -- このように受け手の変数名が異なっても構わない
5 thoughts on “第17回 ~関数を作る~”
コメントを残す
コメントを投稿するにはログインしてください。
パラメーターをあまり理解していません。
値を返す、値を調べるなど等を簡単に解説して貰えませんでしょうか?
値を調べるというのはパラメーターに入っている値を調べるということですか?
はい。そうです。
この辺りを理解するには、print() を使って値を表示してみるのが良いと思います。
下記のページをご覧いただくとさらに理解が深まると思います。
https://roblox-jp.com/coding-basics/coding2-1/
すみません!外のスクリプトから関数を呼ぶ方法はありますか?どうしてもやりたくてもできません。そしてguiを開けた時にパーツが無くなるコードをおしえてください!あとは色々教えたりしてくれて感謝します!
GUIは、LocalScriptになりますね。サーバー側にあるパーツを消すには、RemoteEventを使用します。第25回に登場しますのでご覧ください。
https://roblox-jp.com/programming/e25/
ありがとうございます!