2016-06-27 10 views
2

こんにちは、特定のモデルを見つけ出し、それを生成するシステムを作成しましたが、機能を終了する方法を見つけようとしているにもかかわらず、オブジェクトを繰り返しクローンしています。どのようにこれを行うことができるかについての提案は素晴らしいでしょう。 あなたの時間と忍耐力に感謝します。C#ユニティを連続的にクローンしているオブジェクト

void Update() 
{ 




if (NKCell.GetComponent<ModelChangeScript>().HighqualityModel == true) 
    { 

     HQModelSpawn(); 



public void HQModelSpawn() 
{ 
    HighQualityModel = false; 

    Transform[] HQTransforms = this.GetComponentsInChildren<Transform>(); 



    foreach (Transform t in HQTransforms) 
    { 
     if (t.gameObject.CompareTag("HighQualityModel")) 

     { 
      HQMesh = t.gameObject; 


      Instantiate(t.gameObject, CurrentPosition, Currentrotation); 




      transform.position = CurrentPosition; 
      transform.rotation = Currentrotation; 



      Debug.Log("Found " + t); 

      break; 
     } 

    } 


} 
+3

アップデートはすべてのフレームで実行されます...代わりにスタートでオブジェクトをインスタンス化する必要がありますか? –

+0

私はちょうどそれを試して、それはそのように動作しません、私は信じられないほどのスタートは、シーンが開始されるときだけです。 – ryand444

+0

@ ryand444スタートは、オブジェクトの生命の始まりであり、シーンの生命ではありません。 – Catwood

答えて

3

は、あなたがこれを行うことを望んでいない場合は、Start Eventでこれを行うために必要なすべての最初には、更新されたコードは以下のとおりである、あなたはコードの下のようにブール値もfalseが示唆されなければなりません。

void Update() 
{ 
if (NKCell.GetComponent<ModelChangeScript>().HighqualityModel == true) 
    { 
     HQModelSpawn(); 
NKCell.GetComponent<ModelChangeScript>().HighqualityModel = false; 
    } 


public void HQModelSpawn() 
{ 
    HighQualityModel = false; 

    Transform[] HQTransforms = this.GetComponentsInChildren<Transform>(); 



    foreach (Transform t in HQTransforms) 
    { 
     if (t.gameObject.CompareTag("HighQualityModel")) 

     { 
      HQMesh = t.gameObject; 


      Instantiate(t.gameObject, CurrentPosition, Currentrotation); 




      transform.position = CurrentPosition; 
      transform.rotation = Currentrotation; 



      Debug.Log("Found " + t); 

      break; 
     } 

    } 


} 
+0

これは、おかげで、うまくいきました。少なくとも私のコードでは自分自身と他の人に知らせるためにUpdateでのみ動作するようです。 – ryand444

関連する問題