関数には複数のパラメータを持たせることができます。例として、プレイヤーをチームに割り当てるという関数を作った場合はどうでしょう。どのプレイヤーをどのチームに配属するのかを指示しなくてはなりませんので、少なくとも2つのパラメータが必要になります。
複数のパラメータを設定するには、パラメータ名をカンマで区切ります。
local function assignTeam(playerName, whichTeam)
end
複数のパラメータを使う練習
複数のパラメータを使う練習をしてみましょう。ゴミは破棄し、リサイクル品にはピカピカ効果を加えるという関数を作成してみます。
- 最初のパラメータに指定するのはゴミです。こちらは破棄されます。
- 2 番目のパラメータに指定するのはリサイクル品です。こちらにはピカピカ効果が追加されます。
関数を作る
まずは、複数のパラメータを使用した関数を作り、テストしてみましょう。
- ServerScriptServiceに新しいスクリプトを作成します。
- 2つのパラメータ、trash と recyclable を受け取る sortGarbage()という名前の関数を作ります。
- プログラムの最後で、この関数を呼び出します。
- 関数内で print文を使用して、ここまでのプログラムを確認します。
local function sortGarbage(trash, recyclable)
print("garbage test")
end
sortGarbage()
複数のパラメータの使用
関数内では、パラメータを変数と同じように扱えます。この例では、ゴミを破棄してから、パーティクルエミッター(効果を与えるオブジェクトの1つ)を使用して、リサイクル品にピカピカ効果を与えます。
- print 文を消し、Instance.new() を使用して、下記のように新しい ParticleEmitter(パーティクル エミッタ)を作成します。これは、リサイクル可能なものに輝きを与えるために使用されます。ParticleEmitter は特殊演出効果を出すオブジェクトです。新しいオブジェクトを作る場合に Instance.new() を使います。
local function sortGarbage(trash,recyclable)
-- パーティクルエミッターの新規作成
local sparkle = Instance.new("ParticleEmitter")
end
sortGarbage()
Instance.new()を使用すると、Part、Fire、Folderなどのオブジェクトを作成できます。
- パラメーターtrashに指定されたオブジェクトを破棄します。
local function sortGarbage(trash,recyclable)
local sparkle = Instance.new("ParticleEmitter")
-- trashを破棄
trash:Destroy()
end
sortGarbage()
- ParticleEmitter を recyclable の親に設定します。
Parentを設定することにより、画面に表示されます。最重要ポイントですので覚えておきましょう。
local function sortGarbage(trash,recyclable)
local sparkle = Instance.new("ParticleEmitter")
-- ゴミを破棄し、リサイクル品にピカピカ効果を与える
trash:Destroy()
sparkle.Parent = recyclable
end
sortGarbage()
パラメータを介して値を渡す
- ゴミ出しの時間です。パラメータを設定すると、関数は情報を取り込む準備が整います。
- パーツを2つ追加します。1つ目はゴミにするもの、もう1つはリサイクルするものです。
- ゴミにするパーツの名前は「Cement」(セメント)とし、リサイクルするパーツを「GlassBottle」(ガラス瓶)にします。色や材質を変えておいた方が良いでしょう。
- 先頭行で、それらにアクセスしやすくする変数を追加します。
local cementBlock = game.Workspace.Cement
local glassBottle = game.Workspace.GlassBottle
- 一番最後のところで sortGarbage() を呼び出します。2つのオブジェクトをパラメータで指定します。関数を呼び出すときに渡す値を引数(ひきすう)と言います。値には数値、文字、オブジェクトなどが指定できますが、今回はオブジェクトを引数として渡しています。
sortGarbage(cementBlock, glassBottle) をもう少し詳しく解説します。cementBlock と glassBottle の2つを渡していますが、sortGarbage 関数 のパラメータ trash に cementBlock の内容が入り、recyclable には glassBottle の内容がそのまま渡されるというわけです。
-- 引数として使用するオブジェクト
local cementBlock = game.Workspace.CementBlock
local glassBottle = game.Workspace.GlassBottle
-- ゴミの破棄とリサイクル品の処理
local function sortGarbage(trash,recyclable)
local sparkle = Instance.new("ParticleEmitter")
trash:Destroy()
sparkle.Parent = recyclable
end
-- 2つのオブジェクトを引数で渡す
sortGarbage(cementBlock, glassBottle)
- テスト実行します。最初に渡されたオブジェクトは破棄され、2 番目のオブジェクトにはピカピカ効果が付きます。
パラメータの順序
パラメータは指定された順序に基づいて関数で受け取られます。この例では、2 つのパラメーターがあります。最初に渡されたものは常にゴミになり、2 番目は常にリサイクル品になります。
--ゴミの破棄とリサイクル品の処理
local function sortGarbage(trash,recyclable)
local sparkle = Instance.new("ParticleEmitter")
trash:Destroy()
sparkle.Parent = recyclable
end
-- この指定では、セメントは破棄され、ガラス瓶はリサイクルされる
sortGarbage(cementBlock, glassBottle)
-- この指定では、ガラス瓶は破棄され、セメントはリサイクルされることになる
sortGarbage(glassBottle, cementBlock)
引数を 1 つだけ渡すと、その引数はゴミとして扱われます。3 つの引数を渡す場合、3 番目のパラメーターがないため、3 番目の引数は無視されます。
まとめ
パラメータは、関数に値を渡すためのプレースホルダであす。引数は、プレースホルダを通して渡される値です。カンマで区切って複数のパラメータを作成することができます。関数を呼び出す際、値を受け取る関数に渡す順番によって、どのパラメータを使用するかが決まります。
[ 2-3 パラメータの練習ーボタン ]