Unityではオブジェクトを表示・非表示に切りかえることができる。
GameObjectをアクティブな状態にすることでオブジェクトが表示、非アクティブな状態にすることでオブジェクトが非表示にされる。
アクティブな状態の説明と非アクティブな状態の説明、スクリプトを使ってオブジェクトを表示、非表示にする方法を説明する。
オブジェクトがアクティブ(表示)・非アクティブ(非表示)とは
アクティブな状態 | オブジェクトが表示、コンポーネントは動作 |
非アクティブな状態 | オブジェクトが非表示、コンポーネントは一切動作しない |
アクティブな状態
上の画像のようにチェックがついている状態がアクティブな状態。オブジェクトが表示され、そのオブジェクトについているコンポーネントもしっかり動作する。
非アクティブな状態
上の画像のようにチェックがついていない状態が非アクティブな状態。オブジェクトが非表示になり、そのオブジェクトについているコンポーネントは一切動作しない。
スクリプトでオブジェクトのアクティブ・非アクティブを切り替える
スクリプトでオブジェクトのアクティブ・非アクティブを切り替えるにはSetActiveメソッドを使用する。
現在の状況
- CubeとSphere設置してある
- Cubeにスクリプトがアタッチしてある
Cubeにアタッチされているスクリプトに記述していく。スクリプト名は【Sample.cs】にしてある。
スクリプトのアタッチの仕方がわからない場合はUnityでC#スクリプトを作成してアタッチする方法【基本知識】をご覧いただきたい。
スクリプト例
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Sample : MonoBehaviour
{
public GameObject sphere;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
sphere.SetActive(true);
}
else if(Input.GetMouseButtonDown(1))
{
sphere.SetActive(false);
}
}
}
GetMouseButtonDown(0)
|
左クリック時にtrueを返す |
SetActive(true)
|
アクティブ状態にする |
GetMouseButtonDown(1)
|
右クリック時にtrueを返す |
SetActive(false)
|
非アクティブ状態にする |
左クリック時にアクティブ状態になり、右クリック時に非アクティブ状態になるようなスクリプトになっている。
オブジェクトを格納
GameObject.Findだと非アクティブのオブジェクトを見つけることができないので、publicを使っている。
実行
左クリック時にアクティブ状態になり、右クリック時に非アクティブ状態になるようなスクリプトになっている。
GameObject.Findでは非アクティブなオブジェクトを取得できない
publicで宣言して、Inspectorウィンドウでオブジェクトを格納した。理由はGameObject.Findだと非アクティブのオブジェクトを取得できないからだ。
気をつけていただきたい。
まとめ
- オブジェクトを非表示にするには非アクティブにすれば良い
- 非アクティブな状態だとオブジェクトは表示されず、コンポーネントも動作しない
SetActive(true)
|
アクティブ状態にする |
SetActive(false)
|
非アクティブ状態にする |
以上がオブジェクトをSetActiveを使って表示・非表示にする方法だ。
このようなチュートリアルを販売しているので、Unityでゲームを作成している人は購入していただきたい。
コメント
コメント一覧 (1件)
[…] オブジェクトを SetActive を使って表示/非表示にする | Unishar […]