「Unityを始めたばかりで、そもそもコンポーネントは何か?」、「コンポーネントはどのように操作すればよいのか?」、「GetComponentの使い方は何か」、「利用頻度の高い関数は何かあるのか」などと悩んでいる方はいませんか?
本記事では、Unityの初心者の方に向け、Component(コンポーネント)に関する基本知識やGetComponentの使用方法についてご紹介します。ぜひお読みください。
目次
|Unityとは
Unityとは、ユニティ・テクノロジーズ(Unity Technologies)社が開発した2Dや3Dゲームを開発できるゲームエンジンで、ゲーム業界で非常に活躍しているエンジンです。
ゲームエンジンとは、ゲームを作成するためのサポートをしてくれるツールのことです。
近年では、Unityはゲーム開発だけではなく、ARやVR、医療や建築など様々な分野で利用され、幅広く活躍しておりますUnityは初心者でも使いやすくて無償で利用可能など多くのメリットで、企業だけではなく個人的な開発で多く採用されています。
Unityでは「JavaScript」「C#」を利用したプログラミングでゲームの開発が可能で、ノンプログラミングでの開発も可能です。
PCやモバイルだけではなく、ウェブブラウザや家庭用ゲーム機などのマルチプラットフォームにも対応し、VR・ARなどのコンテンツ開発にも対応することができます。
尚、Unityについて詳しく知りたいという方は、弊社過去の記事をご覧ください。
|Componentとは
Component(コンポーネント)というのは、オブジェクトの部品のことです。
もしオブジェクトが「物」でしたら、Componentは様々な機能を提供する「部品」のことです。
例えば、Hierarchyに任意のObjectを作成すると、Inspectorに「Transform」、「Mesh Renderer」、「Box Collider」などのようなものが表示されます。
それらはコンポーネントのことです。「Transform」の場合は、オブジェクトのサイズ・ポジション・角度を数値の変更で管理する機能を提供します。
「Mesh Renderer」の場合は、オブジェクトの見た目を管理する機能を提供します。
「Box Collider」の場合は、オブジェクトの衝突に関する機能を提供します。
このようなComponentは自分のニーズにより、「AddComponent」での追加や「RemoveComponent」で削除することが可能になります。
他にも多種多様な機能を持っているComponentが存在するため、利用してみましょう。
|GetComponentの使い方
前述の紹介でUnityのComponentの概念を大体理解できたと思いますので、早速ですが、GetComponentの使い方をご紹介いたします。
事前準備
「GetComponent」を使用してできることを理解しましょう。
「GetComponent」は何かというと、Componentをゲットできる関数のことで、Script(スクリプト)からComponentの機能を実行することができます。
Componentはあくまでもオブジェクトの構成要素や部品のようなものなので、「GetComponent」を使用するためには、まずゲームオブジェクトをゲットしなければなりません。
これはEditor上から取得すればよいです。
Editor上からどのように取得すればいいかというと、事前にsource codeを準備する必要があります。
そのためには、実行したい関数のScriptを書きます。
source codeを適当なオブジェクトに加え、関数を実装させ、他のScriptから実行します。
ゲームオブジェクトの取得
Scriptの準備ができたら、今回はGameObjectを獲得しましょう。
Unity EditorのHierarchyという板にゲームオブジェクトの新しい項目が追加されたら、Inspectorの板に必要とされる基本的なComponentが表示されています。
前述で紹介した「Transform」や「Box Collider」のことが例となります。
そこで変数や項目などを管理することができます。それ以外にも必要とされる関連Componentが表示されます。
関連Componentに、実行させたいオブジェクトをドラッグとドロップして入れたり数値をかえたりする操作をすれば、実装が完了します。
以上がゲームオブジェクトを取得する過程です。次はコンポーネントを取得します。
コンポーネントの取得
上述のステップでは、Script上で関数を利用して、ゲームオブジェクトを獲得してComponentを獲得しました。
Inspectorの板に基本的なComponentがあります。
GetComponentを利用した後にComponentの数値を変更してみて、どのような機能があるのかを自分の操作で理解しましょう。
例えば、「Transform」のScaleにある数値を増やしたり減らしたりすると、Sceneで見えるオブジェクトにどのような変化が起きるのか、またPositionの数値を変更すると、Sceneで見えるオブジェクトの位置がどのように変わるのかを理解してみます。
実際にコンポーネント中の項目を操作して機能を理解しましょう。
基本のComponentの機能に慣れれば、ほかのComponentを追加する場合に中身の設定が分かりやすくなると思います。
AddComponentで追加
次は必要なコンポーネントを「AddComponent」で追加します。
GameObjectのすべてのComponentは、Inspectorの板から確認することができるので、まずはどのようなComponentがあるのかをチェックしましょう。
足りないComponentがある場合やそれ以上に追加したい場合は、「AddComponent」を利用しましょう。
「AddComponent」を使用するときに、Scriptを利用する場合と利用しない場合があります。
利用しない場合は、Inspectorの底にある「AddComponent」というボタンをクリックすると、ゲームオブジェクトに追加することが可能なComponentが表示されます。
追加したいComponentをクリックするだけで追加完了で、後は中身の数値や設置項目を調整するだけです。
Scriptを利用する場合はオブジェクトにScriptをつけて実行すれば完成です。
|よく使う関数
スクリプト上でコンポーネントをゲットする場合に、「GameObject.Find」、「GameObject.FindWithTag」、「GameObject.FindObjectsWithTag」など使用頻度が高い関数をご紹介いたします。
GameObject.Find
「GameObject.Find」というのは、Gameobjectを見つけることを意味し、Sceneの中からオブジェクトの名前と一致するゲームオブジェクトを見つけます。
「GameObject.Find」はゲームオブジェクトの名前で取得するもので、動作の負荷が重いです。
常にこの関数を利用するとゲーム画面がカクカクするかもしれませんので、注意しましょう。
一般的に、nameでゲームオブジェクトを検索します。見つからなかった場合はnullでかえします。
GameObject.FindWithTag
「GameObject.FindWithTag」とは、Sceneの中からtagの名前と同じゲームオブジェクトを見つけることです。
この関数を利用して検索する前に、先にオブジェクトにtag managerでタグの設定を行いましょう。
Inspectorのタグにある「Add Tag」をクリックし、名前はお好きにします。
その後にこの関数を使えます。タグのあるActiveなゲームオブジェクトをかえします。
みつからなかった場合はnullでかえします。検索したタグを持っているオブジェクトは、全部ゲットすることができます。
GameObject.FindObjectsWithTag
「GameObject.FindObjectsWithTag」は前述の「GameObject.FindWithTag」と近いものですが、Sceneからタグの名前が同じゲームオブジェクトを複数ゲットすることが可能です。
これも関数を利用して検索する前に、先にオブジェクトにタグの関連設定を行う必要があります。
ただし、このように関数を利用した方法では、負荷が高くなるので要注意しましょう。
どうしても利用しないといけない場合は一回の利用に抑えましょう。
|まとめ
ここまでお読みいただき、ありがとうございました。
本記事ではコンポーネントの基本・ゲットコンポーネント・常に利用する関数などの内容についてご説明しました。
Unityをはじめたばかりの方には分かりにくいかもしれませんが、上記のような概念と基本を理解した上でUnityで操作してみればと思います。
ご興味がある方は、ぜひ試してみてください!