2016-10-21 148 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