質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

23470閲覧

ゲームオブジェクトを画面から表示されないようにする

cdecda

総合スコア11

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

1クリップ

投稿2015/07/01 13:21

Unityで立体的なゲームオブジェクトを非表示にする方法なのですが、ネット上にあったものをUnity上で作成できるCubeに適用したのですが全く変化がありませんでした。
どうしたらゲームオブジェクトを非表示にできるでしょうか。

public class a : MonoBehaviour { void Start () { renderer.enabled = false; Transform[] tr_child = gameObject.GetComponentsInChildren(); foreach ( Transform tr in tr_child ) { tr.renderer.enabled = false; } } void Update () { } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

UNITYのバージョンが不明ですが、
RendererクラスはUnity5.xではエラーになるので
おそらくUnity4.xだと思いますが、念のため両方のケースで回答致します。

Unity4.xですと、以下のようになると思います。

Renderer rend = GetComponent<Renderer>();
rend.enabled = false;

foreach (Transform child in transform)
{
GameObject gameObject = child.gameObject;
gameObject.renderer.enabled = false;
}

Unity5.xでは以下のようになると思います。

Renderer rend = GetComponent<Renderer>();
rend.enabled = false;

foreach (Transform child in transform)
{
GameObject gameObject = child.gameObject;
gameObject.GetComponent<Renderer>().enabled = false;
}

表示、非表示については、enabledを使う方法以外にSetActiveを使う方法もあります。
用途によって使い分けるのが良いと思います。

下記サイトで詳しい説明がありますので、ご参考になさって下さい。

http://trick7.com/2014/08/setactive_or_enabled
http://startunity.blogspot.jp/2013/09/gameobjectsetactive.html

投稿2015/07/02 00:35

Qoo

総合スコア1249

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cdecda

2015/07/02 13:43

回答ありがとうございます。 やはり効果がないようです。 試しに親オブジェクトから子オブジェクトに非表示を適用しないで、子オブジェクトに直接コードを適用するようなことをやろうと思うのですが、その場合はどのようにしたらよいのでしょうか。
Qoo

2015/07/02 19:21

効果がないということですが、何か手順が間違っているように思います。 下記に簡単な確認方法を明記しますので、まずはこちらで確認してみて下さい。 1.新規でプロジェクトを作成して下さい 2.HierarchyでCubeを5つ追加して下さい 3.追加したCubeのひとつを親にして残り4つが子になるように配置して下さい   分かり易くするためにCubeの名前は以下のようにして下さい   Hierarchyは以下のようになります    MainCamera  ▼Cube    Cube1    Cube2    Cube3    Cube4 4.ProjectViewでc#スクリプトを作成し、記載したコードをStartにコピペして下さい   void Start () { Renderer rend = GetComponent<Renderer>(); rend.enabled = false; foreach (Transform child in transform) { GameObject gameObject = child.gameObject; gameObject.renderer.enabled = false; } } 5.スクリプトを親のCubeにアタッチ(取り付け)して下さい。   アタッチはProjectビューのスクリプトをドラッグして   Hierarchyの親Cubeの上でドロップすることで適用されます。    親Cubeを選択し、Inspectorビューを見ると、   スクリプトがアタッチされていることが確認できます。 6.Playボタンで実行すると全てのCubeが非表示になることが確認できます。
cdecda

2015/07/02 23:27

失礼しました。ご指摘のとおり試したところ、非表示になりました。 これのCube階層の中の一つだけに非表示を適用したいのですが、この場合はどのようにしたらよいのでしょうか。 情報不足で申し訳ありません。
Qoo

2015/07/03 01:48

その場合は、下記の2行はコメントアウトします //Renderer rend = GetComponent<Renderer>(); //rend.enabled = false; そしてforeachの中で、if分を使い非表示にしたいもののみを識別します。 下記はCube3を非表示にする場合です。 foreach (Transform child in transform) { GameObject gameObject = child.gameObject; if (gameObject.name == "Cube3") { gameObject.renderer.enabled = false; } } あくまでも一例ですがご参考まで。
cdecda

2015/07/03 09:17

参考になりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問