2013-04-23 14 views
7

私は、特定の条件が与えられたときに起動したいゲームオブジェクトを持っています。私はそれにユニークなタグを与えて、私は使用しようとしましたGameObject.FindObjectWithTag("Tag name").私が言うことができるから、このメソッドは、アクティブなgameobjectsシーンではなく、非アクティブなものを見つけるでしょう。unity3dのタグで非アクティブなgameobjectを見つけた

非アクティブなゲームオブジェクトも検索するコールできるメソッドはありますか? (好ましくはタグによる検索)。

ありがとうございます!

答えて

12

いくつかの調査の後、タグで非アクティブなgameobjectを見つける方法がないようです。あなたは(実行時にのみ不活性化したオブジェクトをゲームに適用されます)、その後それらを再活性化する必要がある場合は、配列に格納非アクティブなゲームオブジェクト -

1:

ソリューションは、非アクティブなゲームオブジェクトにアクセスすることが存在します。

2 - ゲームオブジェクトを非アクティブにしないでください。非アクティブにするコンポーネントを単に非アクティブにします。オブジェクトを消したい場合は、レンダラーを無効にします。特定のスクリプトの場合は、そのスクリプトなどを無効にします。

このソリューションでは、タグ名でゲームオブジェクトを見つけることができます。

+0

マークそれを、それは確かに正しい答えですので。 – Heisenbug

+0

確かに正しいです。非アクティブなオブジェクトが見つかりません。参照を格納する必要があります。 –

+0

これは間違っています。非アクティブなオブジェクトを取得できます。以下のコメントを参照してください。 RTFM。 – Alex

1

FindObjectsOfTypeAllは非アクティブになっていますが、見つからないプレハブやものが見つかる可能性があるので注意が必要です。非アクティブgameObjectsを見つけることができます

+0

はい、とても遅いです。 – RedOrav

5

もの:右のよう

transform.Find() or transform.FindChild() 
transform.GetComponentsInChildren<Component>(true) 

Resources.FindObjectsOfTypeAll<Component>() 

For more details.

+0

@kleopatra:Sry。 ...私はこれを念頭に置いておきます。 :) – Vineet

+0

これは非アクティブなオブジェクトを見つけることができますが、タグでオブジェクトを見つけることはできません。これは私が実際に求めていたものです。 – kUr4m4

+0

あなたが何をしているのか分からない限り、 'Resources.FindObjectsOfTypeAll ()'を使わないでください。これは、プレハブを含むリソースには何も影響しません。つまり、演奏をやめた後でも、ファイルやシーンの外には**永久的な変更**を行います。 –

関連する問題