使预制速度降低

时间:2016-10-21 00:19:37

标签: c# unity3d

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 个答案:

答案 0 :(得分:1)

您正在更改GameObject实例的变量,而不是预制件。

预制就像是GameObject的蓝图,因此大部分数据将被复制到该GameObject的每个实例中。但是你编写的所有代码都是对每个实例的引用,这样每个对象都可以自由地从一个实例移动到另一个,想象一下如果每次你在GameObject变量中做出改变,就像它的生命一样,所有其他实例都改变了生活在一起,这将是一个烂摊子。

要解决您的问题,您需要从一个常见的地方获取该变量的信息,比如LevelManager,该地方的每个实例都可以得到相同的值,它可以是某个对象中的静态字段或者Singleton中的一个字段,取决于游戏的结构。