Components (コンポーネント) はオブジェクトやゲームでの振る舞いに関する心臓部です。コンポーネントはすべての GameObject (ゲームオブジェクト) の関数の一部です。もしコンポ―ネントとゲームオブジェクトの関係をまだ理解していないようでしたら、他の項目に移る前に ゲームオブジェクト ページを参照してください。
ゲームオブジェクトはさまざまなコンポーネントの入れ物です。初期設定により、すべてのゲームオブジェクトには自動で Transform (トランスフォーム) コンポーネントが付いています。これは、トランスフォームコンポーネントによってゲームオブジェクトがどこに位置しているか、どのくらい回転しているのか、どのくらいの大きさなのかが決定されるからです。トランスフォームコンポーネントが無ければ、ゲームオブジェクトはゲームワールドに居場所がなくなってしまいます。例として、空のゲームオブジェクトを作成してみましょう。メニュー項目の中から、GameObject->Create Empty をクリックしてください。新しいゲームオブジェクトを選択して、Inspector (インスペクター) を見てください。
選択しているゲームオブジェクトにどのコンポーネントがアタッチされているのかをいつでも確認することができる手段として、インスペクターが使えることを覚えておきましょう。コンポーネントの増減に合わせて、インスペクターはその時何がアタッチされたのかを常に表示します。コンポーネントのどんなプロパティ (スクリプトも含む) を変更するのにもインスペクターを使います。
選択しているゲームオブジェクトに対して、Component メニューからコンポーネントをアタッチすることができます。生成したばかりの空のゲームオブジェクトに Rigidbody (リジッドボディ) を加えることを今から試してみましょう。メニューから、Component->Physics->Rigidbody を選びます。その際、インスペクターに Rigidbody のプロパティが表示されたのに気づくでしょう。空のゲームオブジェクトを選択したままで Play ボタンを押すと軽く驚くかもしれません。このことを試して、空のゲームオブジェクトに Rigidbody がどのような機能を追加したのか注目してください。 (ゲームオブジェクトに付いている Transform コンポーネントのposition Y の値が減り始めます。これは Unity の物理エンジンによる重力の影響でゲームオブジェクトが落下するためです。
もう一つの選択肢は 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 の値型プロパティはトグル、数字、ドロップダウンのどれかです。しかし、値型プロパティには文字列、色、カーブ、その他の種類があります。これらのプロパティの種類や、値型プロパティの編集については プロパティの編集 ページを参照してください。
コンポ―ネントのコンテキストメニューには数々の便利なコマンドがあります。
同じコマンドは、Inspector のコンポーネントのパネルの右端上部にあるメニュー (3つの垂直ドットのアイコン) からも利用できます。
このコマンドは、直前に編集していたコンポーネントのプロパティの値を元に戻します。
Remove Component はゲームオブジェクトにアタッチしているコンポーネントがもう必要でない場合に利用できるコマンドです。コンポーネント同士で依存し合っている組み合わせがあることに注意してください。例えば、Hinge Joint は リジッドボディ もアタッチされている場合にのみ作用します。もし他のコンポーネントに依存しているコンポーネントを削除しようとすれば警告メッセージが表示されます。
Move Up と Move Down を使って、インスペクター内のゲームオブジェクトのコンポーネントの順序を変更できます。
ヒント: その他に、インスペクター内でコンポーネント名をクリックしてドラッグアンドドロップし、順序を上下に動かすことができます。
Copy Component コマンドは型と、選択中のコンポーネントのプロパティ設定をコピーします。これらは Paste Component Values を用いて、型が一致している他のコンポーネントに貼り付けることができます。また、Paste Component As New を用いれば、あるオブジェクトに対してコピーした値で新しいコンポーネントを作成することもできます。
ゲームが Play Mode (再生モード) の間は、どのゲームオブジェクトのプロパティでもインスペクターから自由に変更することができます。例えば、異なった高さのジャンプを試す場合、Jump Height というプロパティをスクリプトで作成しているのなら、再生モードで、値を変更し、何が起こるかを見るためにジャンプボタンを押してみましょう。その後、再生モードのまま、再度、値を変更して、すぐに結果を確かめることができます。再生モードを終了すると、プロパティは再生モードが始まる前の値に戻ります。そのため、作業内容を失わずに済みます。このワークフローは、作業のイテレーションサイクルに多くの時間を費やすことなく、実験、変更、微調整などを行うのに非常に役立ちます。ぜひ、再生モードでいずれかのプロパティを試してみてください。
2018–09–18 修正されたページ
インスペクターウィンドウ内でのコンポーネントのドラッグアンドドロップ機能を 5.6 で追加
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.