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

コンポーネントの使用

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

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

空のゲームオブジェクトでもトランスフォームコンポーネントが付いている
空のゲームオブジェクトでもトランスフォームコンポーネントが付いている

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

コンポーネントを加える

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

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

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

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

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

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

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

コンポーネントの編集

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

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

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

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

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

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

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

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

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

同様のコマンドがインスペクターのコンポーネントパネルの一番の右上にある「歯車」アイコンからも利用できます。

リセット( Reset )

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

削除( Remove )

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

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

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

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

コピー/ペースト

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

プロパティーのテスト

ゲームが Play Mode (プレイモード)の間は、どのゲームオブジェクトのプロパティーでもインスペクターから自由に変更することができます。例えば、異なった高さのジャンプを試す場合、Jump Height というプロパティーをスクリプトで作成しているのなら、プレイモードを始めて、値を変更し、何が起こるかを見るためにジャンプボタンを押してみましょう。その後プレイモードを止めることなく、再度値を変更してもほんの少しの間に結果を確かめることができます。プレイモードを止めれば、プロパティーはプレイモードが始まる前の値に戻ります。よって、作業内容を失わずに済みます。このワークフローは実験や、調整などの、何度も繰り返すだけの時間を費やさずにゲーム内容を洗練することに対して役立ちます。プレイモードでいずれかのプロパティーを試してみてください。感動すると思いますよ。


  • 2018–09–18 Page amended

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

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