先ほど作成したプログラムでは、同名のパーツ名があると正しく動作しません。つまり、複数のパーツの色を変更したい場合は、パーツごとに新しいパーツと新しいスクリプトを追加する必要があります。それはとても面倒なことです。
ここではパーツにスクリプトを追加して、さらにそのパーツをコピーするだけで動作するものを作成します。これを実現するには、スクリプトで親子関係を明確化する必要があります。
プロジェクトとスクリプトの設定
テンプレート「Baseplate」もしくは「Classic Baseplate」を使用します。
- パーツを1つ追加し、名前を「ColorPart」に変更します。
- エクスプローラーのWorkspace内の「ColorPart」を右クリックし、「Insert Object/オブジェクトを挿入」をクリックし [Script]を選択します。スクリプトの名前を「ColorChangeScript」に変更します。
「ColorPart」の右側にポインタを移動すると、「+」マークが現れますので、そこをクリックし「Script」を選択してもスクリプトが追加できます。
- 次のプログラムをコピーして ColorChangeScript内に貼り付けます。これにより、パーツがColorPart変数に格納され、色が変更されます。
local colorPart = game.Workspace.ColorPart
colorPart.Color = Color3.fromRGB(50, 240, 255)
- 「Run(再生)」をクリックして実行すると色が変わると思います。
親子関係
親とは、スクリプトやパーツなどのオブジェクトがその下に含まれているものです。親の下にあるものはすべてその子供になります。以下に示す例では、ColorPart が親で、ColorChangeScript が子供です。
現在のプログラムでは、 ColorPart という名前の1 つのパーツの色のみを変更できます。任意のパーツの色を変更するには、親子関係を使用します。プラグラムでは「script.Parent」と記述し、自身(スクリプト)の親を取得してそれを利用します。「script」とは自分自身のスクリプトを示し、「Parent」は親を表します。厳密に説明しますと、scriptにもプロパティがあります。その中にParentというものがあり、そこに親が設定されていますので、それを取得するという意味になります。
script.Parent の使用
script.Parentは、 「=」記号で変数に値を代入する方法と同じように使用できます。
- ColorChangeScript で、「game.Workspace.ColorPart」を「script.Parent」に置き換えます。以下のようになります。
local colorPart = script.Parent
colorPart.Color = Color3.fromRGB(50, 240, 255)
再利用可能なパーツのテスト
ColorPartを複数コピーしてみましょう。
- ColorPartを右クリックし、「Duplicate/複製」をクリックします。これで複製できます。親をコピーすると自動的に子供であるColorChangeScriptまでコピーされることも確認してください。
- ゲームを実行すると、すべてのパーツの色が変わるでしょう。
script.Parent を使用する理由
ここではパーツの名前を使っていないという所に着目してください。このようにすることで、プログラムを全く変えずに、パーツの色が変更できたということを覚えておきましょう。script.Parentなどのコードを使用することで、再利用するのに非常に役立ちます。
さらに、親と子の関係を認識することはこれからのプログラミングで大いに役立ちますので十分に理解しておきましょう。
まとめ
名前と場所でパーツを直接参照する代わりに、script.Parent が使用できます。このコードは、スクリプトがアタッチされている親、つまりオブジェクトを取得し、スクリプトがそれに変更を加えられるようにします。script.Parentなどのコードを使用すると、コードを再利用可能にするのに役立ちます。覚えておくべき欠点の 1 つは、コードを変更する場合に更新が必要となるスクリプトがたくさんできてしまうことです。
[ 1-2 オブジェクトとプロパティ ]
[ 2-1 関数のコーディング ]