Menu
CoddyTech

コンポーネントの追加

CoddyのUnityジャーニー「Unityスクリプティングの基礎」セクションの一部。レッスン 32/67。

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

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

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

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

challenge icon

チャレンジ

中級

ココナッツはヤシの木にぶら下がっています。Spaceキーを押すと木が揺れ、ココナッツにRigidbodyが追加されるので、重力によって砂の上に落ちます。

  • 最初にSpaceキーを押すまでは、ココナッツはぶら下がったままです。
  • ココナッツにRigidbodyがまだない場合に限り、Spaceキーを押すと追加されます。そのため、後から押しても何も起こりません。

Playを押し、Spaceキーを押してから、Checkを押してください。

自分で試してみよう

using UnityEngine;

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

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Unityスクリプティングの基礎のすべてのレッスン