2016-10-21 7 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変数に変更を加えたとき、そのライフのように他のすべてのインスタンスが一緒に人生、それは混乱するだろう。

あなたの問題を解決するには、その変数の情報をLevelManagerのような共通の場所から取得する必要があります。場所はオブジェクトのすべてのインスタンスが同じ値を得ることができます。オブジェクト、またはシングルトン内のフィールドを使用して、ゲームの構造に依存します。

+0

ありがとう...私は勉強する必要があります! – fluentparrot

関連する問題