【Unity基礎】SetActiveを使ってゲームオブジェクトを表示・非表示にする方法

Sponsored Link

Unityのゲームオブジェクトを表示、非表示にしたい

どうも、Linです。塩分、むさぼりたいです。

 

Unityでゲームを作っているとたまに、

ゲームオブジェクトを表示・非表示にしたい!

というときがあるでしょう。

そんな時に役に立つのが、

SetActive

というメソッドです。

今日はこいつを使って、ゲームオブジェクトを消したり復活させたりするゲームを作ってみました。

 

例として、赤いボールを消したり出したりしてみましょうか。

 

unity setactive

 

 

Step1. 空のゲームオブジェクトを作成

まずは空のゲームオブジェクトを作成しましょう。

こいつにスクリプトをアタッチして表示、非表示していきますよ。

 

「Ctl + N + Shift」で空のゲームオブジェクトを作成して、名前を「GameManager」に変更しておきましょう。
https://gyazo.com/3c373651ac71c0c8df1bc05c78928118

 

Step2. スクリプトを作成

ゲームオブジェクトを表示、非表示するためのスクリプトを作成します。

名前は、そうですね、

GameManager.sc

とでもしましょうか。
https://gyazo.com/4a623c20bb9a6c7b042ae7e0e948c2e3

 

 

Step3. コードを書く

GameManagerのスクリプトを以下のように編集します。

SetActiveメソッドは引数にtrueを設定したら「表示」、falseを設定したら「非表示」になるのです。

このスクリプトでは、Input.GetMouseButtonDown(0)でマウスをクリックしたときにtrueになるbool値と、スペースキーを押したときにtrueになるInput.GetKey(KeyCode.Space)で条件分岐して使い分けてます。

クリックしたら非表示、スペースキーを押したら表示になるようにしました。

 

Step4. コードをアタッチ

空のゲームオブジェクト「GameManager.sc」にアタッチします。
https://gyazo.com/b1e488e3745afc5f5340f2fb9c0f51cd

 

 

Step5. アウトレット接続

パブリックな変数「Sphere」にSphereを入れてあげましょう。
https://gyazo.com/77218927c45b9a8805c5829461e56528
これで準備完了です。

 

 

Unityのゲームオブジェクトを非表示、そして再び表示できた!

以上が、Unityのゲームオブジェクトを表示、非表示にするSetActiveメソッドの使い方でした。

 

先ほどのゲームは、

  • クリックすると消える
  • スペースキーを押すと復活する

という動きをするはずです。
https://gyazo.com/737b2f10d37adcfbb30d5134603b2e8a
もし、

「UnityのSetActiveで非表示できたけど、その後に、再び表示ができない!」

と悩んでいる方がいたら、今回のように空のオブジェクトを用意して、そこにスクリプトをアタッチすることをおすすめします。

非表示になったゲームオブジェクトのスクリプトは無効になってしまうのでしょうか?

直接Sphereにスクリプをアタッチした例では、表示・非表示を繰り返すことはできませんでした。

ぼくはこのフェーズで結構はまってしまい、1時間ほど格闘していた気がします笑

 

「それでもエラーから抜け出せない!!」

という方にはエンジニア専門のQAサイト「teratail」がおすすめです。

プロのエンジニアの方が質問に答えてくれるので、問題を解決できるかもしれません。

よかったら試してみてくださいね。

 

それでは!

Lin


Sponsored Link

コメントはこちらからお願いします!



もう1本読んでみる