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;
}
}
当我按下按钮时,我想改变预制的物体速度。 第一个预制件的速度发生了变化......但其余部分没有变化。
有什么问题?
答案 0 :(得分:1)
您正在更改GameObject实例的变量,而不是预制件。
预制就像是GameObject的蓝图,因此大部分数据将被复制到该GameObject的每个实例中。但是你编写的所有代码都是对每个实例的引用,这样每个对象都可以自由地从一个实例移动到另一个,想象一下如果每次你在GameObject变量中做出改变,就像它的生命一样,所有其他实例都改变了生活在一起,这将是一个烂摊子。
要解决您的问题,您需要从一个常见的地方获取该变量的信息,比如LevelManager,该地方的每个实例都可以得到相同的值,它可以是某个对象中的静态字段或者Singleton中的一个字段,取决于游戏的结构。