団結

2017-03-17 9 views
0

で無効になってゲームオブジェクトを有効にするには、どのようにゲームオブジェクトを無効にするには、これを達成するために、私は、このようなコードを書かれている:団結

GameObject go; 
go = GameObject.FindWithTag("MainCamera"); 
Destroy(go); 

は、それから私は、その無効にゲームオブジェクトを有効にするために苦労しています。

この点についてお手伝いできますか?

答えて

2

より良い、あなたは....ゲームオブジェクトを破壊し、あなたはそれを無効にしないでください。代わりに、SetActiveを使用してください。

さらに、FindXXXのような機能を特に複数回は使用しないでください。いずれかのスタート機能またはあなたがゲームオブジェクトを無効にしようとすると、代わりにそれ以外

// Drag & Drop the gameobject in the inspector 
public GameObject targetGameObject ; 

public void DisableGameObject() 
{ 
     targetGameObject.SetActive(false) ; 
} 

public void EnableGameObject() 
{ 
     targetGameObject.SetActive(true) ; 
} 

public void ToggleGameObject() 
{ 
     if(targetGameObject.activeSelf) 
      DisableGameObject() ; 
     else 
      EnableGameObject(); 
} 

は、一度オブジェクトを見つけるインスペクタでの参照を追加します。 FindXXX機能が無効になってゲームオブジェクトを見つけることができないことを念頭に置いKeeop(ほとんどの時間)は、それがMainCameraをタグ付けされている場合は

// Drag & Drop the gameobject in the inspector 
private GameObject targetGameObject ; 

public void DisableGameObject() 
{ 
     if(targetGameObject == null) 
      targetGameObject = GameObject.FindWithTag("MainCamera"); 
     if(targetGameObject != null) 
      targetGameObject.SetActive(false) ; 
} 

public void EnableGameObject() 
{ 
     if(targetGameObject != null) 
      targetGameObject.SetActive(true) ; 
} 

public void ToggleGameObject() 
{ 
     if(targetGameObject == null) 
      targetGameObject = GameObject.FindWithTag("MainCamera"); 

     if(targetGameObject == null) 
      return ; 

     if(targetGameObject.activeSelf) 
      DisableGameObject() ; 
     else 
      EnableGameObject(); 
} 
+0

は、Camera.main – Everts

+1

'ゲームオブジェクトを使用ポスターを使用し、それを検索する必要はありません。 FindWithTag'を使用して、私もそれを使用しました。これが一般的なアプローチです。たぶん、彼は彼の心を変え、彼は別のタグを持つgameobjectを見つけたいと思うでしょう。 – Hellium