2016-10-21 201 views
0
public class a : MonoBehaviour 
{ 
    private float speed; 

    void Start() 
    { 
      speed=1; 
    } 

    void Update() 
    { 
     this.transform.Translate (Vector2.right * speed * Time.deltaTime); 
     animator.Play ("gub"); 
     } 

     public void button () 
     { 
      speed = 6f; 
     } 
} 

當我按下按鈕時,我想更改預製對象的速度。 第一個預製件的速度發生了變化......但其餘的不變。降低預製的速度

出了什麼問題?

回答

1

您正在更改GameObject實例的變量,而不是預製。

預製就像一個GameObject的藍圖,所以大部分數據將被複制到該GameObject的每個實例。但是你寫的所有代碼都是對每個實例的引用,這樣每個對象就會從一個到另一個自由地移動,想象一下,如果每次在GameObject變量中進行更改(如生命期),所有其他實例都會更改生活在一起,那將是一團糟。

爲了解決你的問題,你需要從一個普通的地方獲取來自變量的信息,比如一個LevelManager,一個地方是每個對象的實例可以獲得相同的值,它可以是一個靜態字段對象或單例中的字段,這取決於遊戲的結構。

+0

謝謝你......我需要學習!!! – fluentparrot