Version: 2021.2
コンポーネントへの入門
プリミティブとプレースホルダーオブジェクト

コンポーネントの使用

Components (コンポーネント) はオブジェクトやゲームでの振る舞いに関する心臓部です。コンポーネントはすべての GameObject (ゲームオブジェクト) の関数の一部です。もしコンポ―ネントとゲームオブジェクトの関係をまだ理解していないようでしたら、他の項目に移る前に ゲームオブジェクト ページを参照してください。

ゲームオブジェクトはさまざまなコンポーネントの入れ物です。初期設定により、すべてのゲームオブジェクトには自動で Transform (トランスフォーム) コンポーネントが付いています。これは、トランスフォームコンポーネントによってゲームオブジェクトがどこに位置しているか、どのくらい回転しているのか、どのくらいの大きさなのかが決定されるからです。トランスフォームコンポーネントが無ければ、ゲームオブジェクトはゲームワールドに居場所がなくなってしまいます。例として、空のゲームオブジェクトを作成してみましょう。メニュー項目の中から、GameObject->Create Empty をクリックしてください。新しいゲームオブジェクトを選択して、Inspector (インスペクター) を見てください。

Transform コンポーネントを持つ空のゲームオブジェクト
Transform コンポーネントを持つ空のゲームオブジェクト

選択しているゲームオブジェクトにどのコンポーネントがアタッチされているのかをいつでも確認することができる手段として、インスペクターが使えることを覚えておきましょう。コンポーネントの増減に合わせて、インスペクターはその時何がアタッチされたのかを常に表示します。コンポーネントのどんなプロパティ (スクリプトも含む) を変更するのにもインスペクターを使います。

コンポーネントを加える

選択しているゲームオブジェクトに対して、Component メニューからコンポーネントをアタッチすることができます。生成したばかりの空のゲームオブジェクトに Rigidbody (リジッドボディ) を加えることを今から試してみましょう。メニューから、Component->Physics->Rigidbody を選びます。その際、インスペクターに Rigidbody のプロパティが表示されたのに気づくでしょう。空のゲームオブジェクトを選択したままで Play ボタンを押すと軽く驚くかもしれません。このことを試して、空のゲームオブジェクトに Rigidbody がどのような機能を追加したのか注目してください。 (ゲームオブジェクトに付いている Transform コンポーネントのposition Y の値が減り始めます。これは Unity の物理エンジンによる重力の影響でゲームオブジェクトが落下するためです。

Rigidbody コンポーネントがアタッチされている空のゲームオブジェクト
Rigidbody コンポーネントがアタッチされている空のゲームオブジェクト

もう一つの選択肢は Component Browser (コンポーネントブラウザー) を使うことです。これは、オブジェクトのインスペクターにある Add Component ボタンより開くことができます。

コンポーネントブラウザー
コンポーネントブラウザー

ブラウザーはカテゴリーによってコンポーネントが探しやすいように分類されています。また、名前を用いてコンポーネントを絞り込むことができる検索ボックスもあります。

一つのゲームオブジェクトに対していくつかのコンポーネントを組み合わせてアタッチすることもできます。いくつかのコンポーネントは他のものと組み合わせることでベストな働きをします。例えば、リジッドボディはコライダーのどれかと作用します。リジッドボディは NVIDIA PhysX 物理エンジンを通してトランスフォームを管理し、コライダーはリジッドボディを他のコライダーと衝突させ、相互作用を起こせるようにします。

特定のコンポーネントの使用についてより深く知りたいのであれば、関連したコンポーネントリファレンスページでいずれかのコンポーネントについて読むことができます。または、Unity のインスペクターでコンポーネントの上部にある小さな ? マークをクリックすることでもリファレンスページにアクセスすることができます。

コンポーネントの編集

コンポーネントの素晴らしい機能の 1 つに柔軟性があります。コンポーネントをゲームオブジェクトにアタッチすると、コンポーネント内のさまざまな値や Properties (プロパティ) が表示されます。それらはゲームを作りながら、または、ゲームを実行している時にスクリプトによって調節されます。プロパティには 2 つの主要なタイプがあります。それは、Values (値) と References (参照) です。

以下の画像を見てください。これは Audio Source コンポーネントを持った空のゲームオブジェクトです。インスペクターに表示されている Audio Source のすべての値は初期値です。

このコンポーネントは参照型プロパティを一つと、値型プロパティを七つ持っています。Audio Clip は参照型プロパティです。この Audio Source が再生され始めたとき Audio Clip プロパティで参照されている音声ファイルの再生が試みられます。参照が指定されていなければ、再生用の音声がない為エラーが起こります。ですから、インスペクター内でファイルを参照しなければなりません。参照はプロジェクトビューから音声ファイルを参照型プロパティにドラッグするか、オブジェクトセレクターを使用することで簡単に行えます。

Audio Clip プロパティで効果音ファイルが参照されています
Audio Clip プロパティで効果音ファイルが参照されています

コンポーネントはどんな種類のコンポーネント、ゲームオブジェクト、アセットに対しても参照を持つことができます。プロパティの編集 ページで参照の割り当てについてより学ぶことができます。

Audio Clip の残りのプロパティはすべて値型プロパティです。これらはインスペクターで直接調整することができます。Audio Clip の値型プロパティはトグル、数字、ドロップダウンのどれかです。しかし、値型プロパティには文字列、色、カーブ、その他の種類があります。これらのプロパティの種類や、値型プロパティの編集については プロパティの編集 ページを参照してください。

コンポーネントのコンテキストメニュー

コンポ―ネントのコンテキストメニューには数々の便利なコマンドがあります。

コンポーネントのコンテキストメニュー
コンポーネントのコンテキストメニュー

同じコマンドは、Inspector のコンポーネントのパネルの右端上部にあるメニュー (3つの垂直ドットのアイコン) からも利用できます。

Reset (リセット)

このコマンドは、直前に編集していたコンポーネントのプロパティの値を元に戻します。

Remove (削除)

Remove Component はゲームオブジェクトにアタッチしているコンポーネントがもう必要でない場合に利用できるコマンドです。コンポーネント同士で依存し合っている組み合わせがあることに注意してください。例えば、Hinge Jointリジッドボディ もアタッチされている場合にのみ作用します。もし他のコンポーネントに依存しているコンポーネントを削除しようとすれば警告メッセージが表示されます。

Move Up/Move Down (上に移動/下に移動)

Move UpMove Down を使って、インスペクター内のゲームオブジェクトのコンポーネントの順序を変更できます。

ヒント: その他に、インスペクター内でコンポーネント名をクリックしてドラッグアンドドロップし、順序を上下に動かすことができます。

Copy/Paste (コピー/貼り付け)

Copy Component コマンドは型と、選択中のコンポーネントのプロパティ設定をコピーします。これらは Paste Component Values を用いて、型が一致している他のコンポーネントに貼り付けることができます。また、Paste Component As New を用いれば、あるオブジェクトに対してコピーした値で新しいコンポーネントを作成することもできます。

プロパティのテスト

ゲームが Play Mode (再生モード) の間は、どのゲームオブジェクトのプロパティでもインスペクターから自由に変更することができます。例えば、異なった高さのジャンプを試す場合、Jump Height というプロパティをスクリプトで作成しているのなら、再生モードで、値を変更し、何が起こるかを見るためにジャンプボタンを押してみましょう。その後、再生モードのまま、再度、値を変更して、すぐに結果を確かめることができます。再生モードを終了すると、プロパティは再生モードが始まる前の値に戻ります。そのため、作業内容を失わずに済みます。このワークフローは、作業のイテレーションサイクルに多くの時間を費やすことなく、実験、変更、微調整などを行うのに非常に役立ちます。ぜひ、再生モードでいずれかのプロパティを試してみてください。


  • 2018–09–18 修正されたページ

  • インスペクターウィンドウ内でのコンポーネントのドラッグアンドドロップ機能を 5.6 で追加

コンポーネントへの入門
プリミティブとプレースホルダーオブジェクト