【Unity入門】他のオブジェクトのコンポーネントを取得する方法

スクリプトで他のオブジェクトのコンポーネントを取得することができます。

やり方は、publicをつけた取得したいコンポーネント型の変数を作って、取得したいコンポーネントが追加されたオブジェクトをUnityエディタから指定するだけです。

実際にやってみる

準備

それでは、実際にオブジェクトに力を加えてみましょう。

まずは、以前作成した、『Unity Basics』というプロジェクトを開いてください。

『Unity Basics』を開いたら、他のオブジェクトのコンポーネントを取得するシーンを作りましょう。

Scenesフォルダの中に作成します。

ProjectウィンドウでScenesフォルダを選択しましょう。

選択した状態で『+』ボタンを押しましょう。

色々と出てくるので、『Scene』をクリックしましょう。

すると、Scenesフォルダの中に新しくSceneが作成されます。

Sceneの名前を『OtherComponent』に変更しておきましょう。

今回は『OtherComponentt』の中でやっていきたいので、Sceneを移動します。

『OtherComponent』をダブルクリックしましょう。

すると、Sceceを移動することができます。

Hierarchyウィンドウを見ると、現在のSceneが『OtherComponent』に変わっていますね。

次に他のオブジェクトのコンポーネントを取得するスクリプトを作りましょう。

Scriptsフォルダを選択してください。

選択した状態で『+』ボタンを押しましょう。

色々と出てくるので『C# Scripts』を選択します。

すると、新しくスクリプトが作成されます。

名前が確定してしまう前に『OtherComponent』と変更しましょう。

名前を変更したら、スクリプトを編集していきましょう。

OtherComponentをダブルクリックしてください。

すると、VIsual Studioが起動して、OtherComponentを編集できるようになります。

他のオブジェクトのコンポーネントを取得してみる

それでは、他のオブジェクトのコンポーネントを取得していきましょう。

今回は、他のオブジェクトのコンポーネントを取得して、そのコンポーネントをオフにしてみようと思います。

まずは、先ほど作ったスクリプトを適当なオブジェクトに追加します。

今回はDirectional Lightに追加しましょう。

スクリプトOtherComponentをDirectional Lightにドラッグ&ドロップしましょう。

すると、Directional LightにOtherComponentが追加されます。

それではOtherComponentを編集してMain CameraのCameraコンポーネントを取得し、スタート時にオフにしてみましょう。

編集するために、ProjectウィンドウでOtherComponentをダブルクリックしましょう。

まずは、Cameraコンポーネントを取得する記述をします。

Start関数の上に

public Camera cameraComponent;

と記述しましょう。

コードについて説明しておきましょう。

このコードはCameraコンポーネント型の

cameraComponentという変数を作るという内容です。

publicがついているので、

Unityエディタから中身を格納することができます。

実際に中身を格納してみましょう。

スクリプトを保存して、Unityエディタに戻ってください。

Unityエディタに戻ったらDirectional Lightを選択しましょう。

すると、OtherComponentの

Camera Componentに

オブジェクトが指定できるようになっています。

ここにCameraコンポーネントが付いている、Main Cameraを指定しましょう。

Main CameraをCamera Componentにドラッグ&ドロップしましょう。

すると、このような表示になります。

これで、Cameraコンポーネント型のcameraComponentという変数に

Main Cameraの

Cameraコンポーネントが格納されました。

次に、取得したCameraコンポーネントをスタート時にオフにしてみましょう。

Start関数の中に

cameraComponent.enabled = false;

と記述しましょう。

コードについて説明しておきます。

このコードは、cameraComponentの

enabledの値が

falseになるという内容です。

enabledの値がfalseになったコンポーネントはオフになります。

なので、この状態で実行するとスタート時にMain CameraのCameraコンポーネントはオフになるはずです。

実際にそうなるのか実行して確かめてみましょう。

スクリプトを保存してUnityエディタに戻りましょう。

Unityエディタに戻ったら、再生ボタンを押してください。

すると、予想通り、スタートと同時にCameraコンポーネントはオフになりますね。

このようにして、他のオブジェクトのコンポーネントを取得することができます。