Menu
CoddyTech

コンポーネントの追加

CoddyのUnityジャーニー「Unityスクリプトの基礎」セクションの一部。レッスン 46/85。

gameObject.AddComponent<T>() は、ゲームの実行中にオブジェクトに型 T の新しいコンポーネントを追加し、次の行で設定できるようにそのコンポーネントを返します。コンポーネントは GameObject に属しており、スクリプトは gameObject を通じて GameObject にアクセスします。このキャンプファイアは、ゲームの開始時に自分自身を暖かなオレンジ色の光で照らします。

void Start()
{
    Light glow = gameObject.AddComponent<Light>();
    glow.color = new Color(1f, 0.5f, 0f);
    glow.intensity = 2f;
}

この方法で追加したコンポーネントは、ゲームの実行中は存在し続けます。「プレイ」を停止すると、オブジェクトはシーンに保存された状態に戻り、Light はなくなります。自分で作成したスクリプトもコンポーネントです。gameObject.AddComponent<Spinner>() を使うと、ほかのスクリプトと同じように実行を開始する Spinner が追加されます。

ほとんどのコンポーネントは複数回追加できますが、できないものもあります。オブジェクトが持てる Rigidbody は最大1つで、2つ目を追加しようとすると、代わりに Console に警告 Can't add component 'Rigidbody' が表示されます。複数回実行される可能性があるコードでは、追加する前にオブジェクトがすでにそのコンポーネントを持っているかどうかを確認します。

challenge icon

チャレンジ

中級

Spaceキーを押すとヤシの木が揺れ、ココナッツが落ちます。

  1. Update()内で、Input.GetKeyDown(KeyCode.Space)のときに、gameObject.AddComponent<Rigidbody>()でRigidbodyを追加します。
  2. ココナッツにまだRigidbodyがない場合のみ追加します:!TryGetComponent(out Rigidbody rb)。2回目のSpaceキーでは、Rigidbodyは追加されません。

「プレイ」を押してからSpaceキーを押すと、ココナッツが砂の上に落ちます。その後、「確認」を押します。

自分で試してみよう

using UnityEngine;

public class CoconutDrop : MonoBehaviour
{
    void Update()
    {
        // Space: ココナッツにまだRigidbodyがなければ追加する
    }
}

Unityスクリプトの基礎のすべてのレッスン

自分で練習してみよう: Unityプレイグラウンド