Unityのゲームオブジェクト(GameObject)とは?
まず、簡単にUnityとGameObject(ゲームオブジェクト)の概要を紹介します。
Unityとは?
Unityは、主に3Dゲーム開発に使用されているゲームエンジンです。C++で作られたUnityは、3Dゲーム開発の他にもxR(VR、ARなど仮想現実系の開発)の分野で普及し始めています。Unityは原則として有償ツールですが、無償版(Unity Personal)を使用することで全ての機能を無料で試すことができます。
Unityの特徴
Unityの特徴は主に以下3点です。
コーディングレス開発に対応
コーディングレスとは、「コーディング作業が無い」様子を指します。Unityではプログラミング言語を用いたコーディング作業を行わずとも、直感的な操作でゲーム開発を進めることができます。これによりプログラミングスキルを持たない人間でもアイディアを具現化しやすくなるわけです。
物理エンジン
物理エンジンとは、現実世界の物理法則に従ってゲームオブジェクトを制御・操作するための機能です。物理エンジンを使えば、「重力」や「爆風」といった物理計算が必要な表現をリアルに描くことができます。Unityは物理エンジンを標準搭載しているため、単体で高品質な3Dゲーム制作が可能になるわけです。
C#による拡張と外部アセット
Unityには、ゲーム制作に必要なツールや資産が豊富に含まれています。また、C#による機能拡張・カスタマイズも可能です。さらに、外部アセット(情報資産)を取り込んで、オブジェクトをカスタマイズし、オリジナルゲームを制作することもできます。
UnityのGameObject(ゲームオブジェクト)とは?
Unityを使用した開発では、GameObjectへの理解がとても大切です。ここからはGameObjectとは何かを解説していきます。
「オブジェクト」とは日本語で「物・対象物」などと翻訳されます。抽象的な概念ですが、ITの分野では「コンピューターの中で何かしらの操作・処理の対象となる目標」をオブジェクトと呼ぶことが多いです。また、プログラム内部では、「実体を想像できるモデル」のようなイメージで扱われ、クラスやインスタンスもオブジェクトの一部です。
GameObjectとは、Unityで開発するゲーム内の物体(キャラクター、背景、モノ、道具など)を定義する基礎的な概念です。Unityはゲーム開発に特化したエンジンであるため、オブジェクトの大半はGameObjectを使用して作成されています。また、GameObjectに対して「コンポーネント(属性や要素)」を追加していくことで、さまざまな外観・動きを持ったキャラクター・道具・背景などが完成するのです。そのため、「GameObject=空の容器・部屋」と考えて良いでしょう。
Unityではキャラクターや構造物など、目視でも確認できるオブジェクトが多数使われています。これらは、一般的に「GameObject」を使用して作成されます。
Unityにおけるゲームオブジェクトの利用方法
では、UnityにおけるGameObjectの基本的な利用方法を解説します。
GameObjectの基礎
Unityでは、まずGameObjectを作成し、その中にオブジェクトの属性を表す「コンポーネント」を追加することで、さまざまなオブジェクトを作成します。例えば、ゲーム内に「民家」を作成したい場合は、民家の容器となるGameObjectを作成し、「屋根の色」「壁の色」「窓」などをコンポーネントとして追加していくイメージです。また、コンポーネントは見た目だけではなく「動作」も定義可能なことを覚えておいてください。基礎的な概念を確認したところで、ここからはGameObjectの生成・削除・非表示など基本的な操作を紹介します。
3Dオブジェクトの生成
Unityには「プリミティブオブジェクト」が用意されています。プリミティブオブジェクトとは、GameObjectのテンプレートやひな形のようなものです。プリミティブオブジェクトを使用すると、簡素なオブジェクトであれば比較的簡単に作成可能です。ここからは、Unityに実装されているプリミティブオブジェクトを6つご紹介します。
-
・Cube
・Sphere
・Capsule
・Cylinder
・Plane
それぞれについて詳しく見ていきましょう。
Cube
「立方体」のGameObjectです。テクスチャを張り付けるだけで床や壁、岩などのオブジェクトを作成することができます。また、開発段階でモデルが完成していない場合に活用されるケースも多いです。例えば乗り物のモデルが完成していない場合、Cubeを引き伸ばして寸法を合わせたオブジェクトを作成してコードテストなどが行えます。
Sphere
「球体」のGameObjectです。球体の表現(ボールや惑星など)に使用されることが多いプリミティブオブジェクトになります。また、半透明にして点滅や点灯などGUIに活用されるケースも多いです。。
Capsule
「楕円上のカプセル」に似たGameObjectです。使用頻度は高くなく、未作成のオブジェクトの位置決めや仮置きなどに使用されます。単純な形をしているCubeと比べて物理演算のテストに向いています。
Cylinder
「円柱型」のGameObjectです。柱など構造物のパーツとして使われることが多いでしょう。
Plane
いわゆる「横置きの平面」です。板状のGameObjectで、横幅と奥行きを持つものの「厚み」の概念はありません。床や地面として使われます。なお、裏面から見ると描画されないことに注意してください。
Quad
こちらは「縦置きの平面」です。高さと幅を持つGameObjectだと考えてください。壁などの表現に使用されます。Planeと同じように裏側の描画はありません。
GameObjectを自動生成する方法
ゲームが進行している最中にGameObjectを自動生成することを「動的生成(インスタンス)」と呼び、「Instantiate関数」を使用して行います。Instantiate関数にさまざまなイベントを指定することで、「銃から次々に銃弾が発射される」といった連続的な動きのある表現が可能になります。
GameObjectの削除方法
一方GameObjectを動的に削除する場合は、「Destroy関数」を使用します。Destroy関数を使用することで、「オブジェクトが消えるタイミングや時間」などを自由に変化させます。
GameObjectの非表示化
生成や削除を伴わず、単に「見えない状態」を創り出す場合に使用するのが「SetActive」です。SetActiveに「false」をセットすることで、対象のGameObjectを非表示にできます。setActive:falseの状態はあくまで「見えない状態」でオブジェクト自体は残っている点にご注意ください。
スクリプトによるコンポーネント追加
GameObjectの操作とはやや趣が異なりますが、GameObjectにセットするコンポーネントをコーディングで追加することも可能です。新しいコンポーネントをC#スクリプトで作成し、適用したいGameObjectに追加することで、独自の質感や動作などを表現できます。C#スクリプトで作成したコンポーネントの追加方法としては、以下の3つがあります。
-
・ドラッグ&ドロップ
・スクリプト検索で追加
・管理ツールによる動的な追加
それぞれについて詳しく見ていきましょう。
ドラッグ&ドロップ
スクリプトを選択した状態で対象のGameObjectにドラッグ&ドロップを実行します。
スクリプト検索で追加
GameObjectを選択した状態で「Add Component」から作成したスクリプト(コンポーネント)を検索し、追加します。
管理ツールによる動的な追加
前述の2つは手動による静的な追加方法です。一方、動的にスクリプトを追加したい場合は管理スクリプトを使用します。プログラム内で管理スクリプト「AddManager」が希望するスクリプトを追加するようにコーディングを行います。
こうすることで、管理スクリプトが実行されると任意のコンポーネントがGameObjectに追加されるようになります。
Unityのゲームオブジェクトに関するQ&A
最後にUnityに関するQ&Aを確認していきましょう。
Q1.Unity GameObjectとは何ですか?
Unity GameObjectとは、Unityで開発するゲームに登場する物体を定義する基礎概念。キャラクターや道具、背景を格納する容器のような概念になっている。
Q2.プリミティブオブジェクトの種類は?
Unity GameObjectのテンプレートであるプリミティブオブジェクトは以下の6つです。
-
・Cube
・Sphere
・Capsule
・Cylinder
・Plane
・Quad
Q3.C#スクリプトで作成したコンポーネントの追加方法は?
C#スクリプトで作成したコンポーネントの追加方法は以下の3つです。
・ドラッグ&ドロップ
・スクリプト検索で追加
・管理ツールによる動的な追加
ITエンジニアの転職ならレバテックキャリア
レバテックキャリアはIT・Web業界のエンジニア職を専門とする転職エージェントです。最新の技術情報や業界動向に精通しており、現状は転職のご意思がない場合でも、ご相談いただければ客観的な市場価値や市場動向をお伝えし、あなたの「選択肢」を広げるお手伝いをいたします。
「将来に向けた漠然とした不安がある」「特定のエンジニア職に興味がある」など、ご自身のキャリアに何らかの悩みを抱えている方は、ぜひ無料のオンライン個別相談会にお申し込みください。業界知識が豊富なキャリアアドバイザーが、一対一でさまざまなご質問に対応させていただきます。
「個別相談会」に申し込む
転職支援サービスに申し込む
※転職活動を強制することはございません。
レバテックキャリアのサービスについて