2016-11-16 7 views
0

ゲームの昼夜のサイクルのためにゲーム時間に応じてプレイ中に煙プレハブの色を変更する必要がありますが、何回か変更する方法がわかりません。ゲーム中のプレハブの開始色を変更する

私のスクリプトは、私が望む開始色でプレハブをインスタンス化するのにうまく動作しますが、後で再度変更することはできません。

これは私のコードです:

class Smoke1 : MonoBehaviour 
{ 
    public GameObject myPrefab; 
    public static GameObject newSmoke; 
    public GameObject canvasObject; 

void Start() 
     { 
     GameObject newSmoke = Instantiate(myPrefab, new Vector3(397, -394, 90), Quaternion.Euler(-90, 0, 0)) as GameObject; 
     newSmoke.transform.SetParent(canvasObject.transform, false); 
     newSmoke.transform.localScale = new Vector3(1, 1, 1); 

     newSmoke.GetComponent<ParticleSystem>().startColor = Color.red;   
     } 

    void Update() 
     { 
     if (TimeManager.gametimeDecimal < 6.0m)  
      newSmoke.GetComponent<ParticleSystem>().startColor = Color.blue; 

     if (TimeManager.gametimeDecimal >= 6.0m && TimeManager.gametimeDecimal <= 8.0m) 
      newSmoke.GetComponent<ParticleSystem>().startColor = Color.yellow; 

     if (TimeManager.gametimeDecimal > 8.0m && TimeManager.gametimeDecimal < 19.0m) 
      newSmoke.GetComponent<ParticleSystem>().startColor = Color.green; 
     } 

そして、これが私の階層です:私は手動で開始色を変更するとenter image description here

は、それが動作するプレイタイム中に検査官の谷が、私はどのように把握することはできません私のスクリプトがそれをするようにする。

私に助言をいただけますか?

ありがとうございます!

+0

あなたは 'TimeManager.gametimeDecimal'によって返された値を確認しましたか? (Debug.Logを使用) – Hellium

答えて

2

Startメソッドで 'newSmoke'変数を再度定義したので、オブジェクトをインスタンス化するときに静的変数には到達しませんが、同じ名前のローカル変数になります。

は、だからあなたのスタートの最初の行は、このように変更します。

newSmoke = Instantiate(myPrefab, new Vector3(397, -394, 90), Quaternion.Euler(-90, 0, 0)) as GameObject; 
関連する問題