- 最初はオブジェクトが非表示にしたままでいいけど、この処理をしたら表示したいな
という悩みを解決します。
SetActiveを使うことでオブジェクトの表示、非表示を制御することができます。スクリプトが知りたい方は、スクリプトの部分に飛んでください。
Unityのオブジェクトを表示・非表示にする方法
- 空のオブジェクトを作る
- 立方体を作る
- スクリプトを作成して開く
- スクリプトを書く
- スクリプトをアタッチする
- アウトレット接続する
普通に立方体を作って、そこにスクリプトをアタッチしてオブジェクトを表示・非表示したりようと思ったんだけどできなかった!
ので空のオブジェクトにスクリプトをアタッチしてやっていきます。
空のオブジェクトを作る
【Hierarchy】→【Create】→【Create Empty】
立方体を作る
【Hierarchy】→【Create】→【Cube】
スクリプトを作成して開く
【Projectウィンドウ】→【Create】→【C# Script】→【GameController】→【ダブルクリックしてスクリプトを開く】
スクリプトを書く
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameController : MonoBehaviour
{
public GameObject Cube;
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
// 左クリックしたとき、オブジェクト表示
if (Input.GetMouseButtonDown(0))
{
Cube.SetActive(true);
}
// 右クリックしたとき、オブジェクト非表示
if (Input.GetMouseButtonDown(1))
{
Cube.SetActive(false);
}
}
}
if (Input.GetMouseButtonDown(0)){A} | 左クリックされたときにAの処理を行う |
if (Input.GetMouseButtonDown(1)){A} | 右クリックされたときにAの処理を行う |
左クリックされたときにオブジェクトを表示、右クリックされたときにオブジェクトを非表示にしてます。
SetActiveってこんな感じで使えます。
スクリプトをアタッチする
【GameObjectにGameControllerスクリプトをドラッグ&ドロップ】
アウトレット接続する
【Unityエディタに戻る】→【GameObjectを選択】→【Cubeをドラッグ&ドロップ】
実行すると
左クリックされたときにオブジェクトを表示、右クリックされたときにオブジェクトを非表示になっています。
Unityのオブジェクトを表示・非表示できない場合
表示や非表示したいオブジェクトにスクリプトをアタッチしているのかもしれません。
例えばCubeを表示したり非表示したりしたいのに、Cubeにスクリプトをつけてはダメということです。
なぜか自分はできませんでした。
まとめ
- 空のオブジェクトを作って、それにスクリプトをつけてオブジェクトを制御する
- SetActiveによってオブジェクトの表示・非表示を設定できる
表示・非表示したいオブジェクトにアタッチしてあるスクリプトに記述すれば、普通に切り替えされると思ったんですけどね( ・∇・)
まあしょうがないです。
オブジェクトの表示・非表示するSetActiveの説明で使ったGIf。GIFのくせに、動画のように見える速さで表示・非表示を切り替えた( ・∇・)
ただそれだけっ。そろそろ帰ろうかな。#unity #unity3d pic.twitter.com/QiSissgFH2
— さぎのみや (@saginomiya8) October 3, 2018
以上さぎのみや(@saginomiya8)でした。
コメント