【Unity】オブジェクトをSetActiveを使って表示・非表示にする【アクティブ・非アクティブ】

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)
非アクティブ状態にする

左クリック時にアクティブ状態になり、右クリック時に非アクティブ状態になるようなスクリプトになっている。

 

オブジェクトを格納

Inspectorウィンドウでオブジェクトを格納

GameObject.Findだと非アクティブのオブジェクトを見つけることができないので、publicを使っている。

 

実行

オブジェクトをアクティブ・非アクティブに切り替える

左クリック時にアクティブ状態になり、右クリック時に非アクティブ状態になるようなスクリプトになっている。

 

GameObject.Findでは非アクティブなオブジェクトを取得できない

publicで宣言して、Inspectorウィンドウでオブジェクトを格納した。理由はGameObject.Findだと非アクティブのオブジェクトを取得できないからだ。

気をつけていただきたい。

 

まとめ

  • オブジェクトを非表示にするには非アクティブにすれば良い
  • 非アクティブな状態だとオブジェクトは表示されず、コンポーネントも動作しない
SetActive(true)
アクティブ状態にする
SetActive(false)
非アクティブ状態にする

以上がオブジェクトをSetActiveを使って表示・非表示にする方法だ。

このようなチュートリアルを販売しているので、Unityでゲームを作成している人は購入していただきたい。

>>Unityでもっとゲーム開発する

あわせて読みたい
【Unity3Dサンプルゲーム・チュートリアル】「フリスビーを犬に届けよ!」の概要 【はじめに】 Unityでのゲーム開発を手助けするメディア「Unishar-ユニシャー」のさぎのみやです。「フリスビーを犬に届けよ!」というゲームのチュートリアルを作成し...
オブジェクトをSetActiveを使って表示・非表示にする方法

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!

コメント

コメント一覧 (1件)

ゲームオブジェクト (GameObject) [Unity] – Site-Builder.wiki へ返信する コメントをキャンセル

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次