コードの型
スクリプトで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」。このように使い分けしました。

コメント