【Unity/C#】GameObject(ゲームオブジェクト)の基本と仕組み

コードの型

スクリプトでGameObjectを扱う時の、最も基本的な書き方です。

C#

// 1. スクリプトがくっついている自分自身を取得する
GameObject self = this.gameObject;

// 2. 画面上の特定のオブジェクト(StartPanelなど)を操作する
public GameObject startPanel; 

// 3. スイッチのON/OFF(表示・非表示)を切り替える
startPanel.SetActive(true);  // 表示する
startPanel.SetActive(false); // 非表示にする

コードの仕組み

Unityの画面にあるプレイヤーや敵、UIボタンなどはすべて「GameObjectという名前の空の箱」です。

  • GameObject(箱): 「シーン(ゲームのステージ)」という場所に配置できる、ただの箱です。
  • コンポーネント(中身): その箱に詰める「機能」のことです。
    • 見た目を作る機能(画像など)
    • 動きを作る機能(スクリプトなど)
    • 音を鳴らす機能(オーディオなど)

つまり、GameObjectとは「機能(コンポーネント)をたくさん詰め込んだ、Unity世界のあらゆるモノの本体」のことなのです。

活用例(画面の表示切り替え)

連打ゲームで作成したように、ゲームの状態に合わせて画面を出し入れする時に使います。

C#

public GameObject startPanel; // インスペクターで箱を登録

public void ShowStart()
{
    // スタートパネルという箱を「ON」にして画面に表示する
    startPanel.SetActive(true);
}

その他(GameObjectに関する補足)

GameObjectを理解するためのコツを3つにまとめました。

  • インスペクターでの紐付け: スクリプト内の public GameObject は、Unityの画面で「どの箱を操作するか」を指さして教えるための窓口です。ここにゲーム画面上のオブジェクトをドラッグ&ドロップして繋ぎます。
  • 「箱」と「中身」は別物: SetActive(false) をしても、GameObject(箱)自体が消滅するわけではありません。あくまで「画面に映さない(非表示にする)」だけなので、後でまた true にすればすぐ呼び戻せます。
  • Destroyとの違い: Destroy(gameObject); と書くと、箱ごと完全に消滅させます。使い終わった弾丸や敵など、もう二度と使わないものにだけ使いましょう。

GameObjectは、「Unityという広大な世界に、モノとして存在させるための唯一の手段」です。

まずは「SetActive で箱を隠したり出したりする」という感覚を掴めれば、Unityでのモノの管理はバッチリです!

その他(GameObjectとの違いと注意点)

  • 大文字と小文字の明確な区別:
    • GameObject(大文字)=「箱」という種類の定義(設計図)。新しい箱を作ったり、他の箱を探したりするときに使う。
    • gameObject(小文字)=「このスクリプトがくっついているその特定の箱」。自分自身を操作するときに使う。
  • 省略可能: 実はスクリプト内では gameObject.SetActive(true) と書かなくても、単に SetActive(true) と書くだけで「自分自身に対して実行する」とみなされる場合が多いです。しかし、初心者のうちは gameObject. を明示して書いたほうが、「どの箱に対して命令しているか」が明確になるのでおすすめです。

GameObjectを理解すると、「自分自身の位置を動かしたい」「自分自身を消したい」といった命令が、誰に対して行われているのかがハッキリと分かるようになります。

「自分自身の箱を操作する小文字の gameObject」と「新しい箱を作る/探す大文字の GameObject」。このように使い分けしました。

コメント

タイトルとURLをコピーしました