变量不在Unity中更新

时间:2017-10-25 14:27:04

标签: visual-studio unity5

所以在visual studio line中

public float enemySpeed = 0.2f;

但在Unity中,当我将其更改为enemySpeed = 1时,即使我停止游戏,也会保持这种状态。并重新启动Unity甚至脚本中的enemySpeed = 0.2f

2 个答案:

答案 0 :(得分:1)

更改公共成员声明和初始化旁边的值不会在检查器中更改。一旦Unity序列化您的公共变量,该值将保留,直到您在检查器中更改

但是,如果您查看组件,在检查器中,您会在右侧看到一个小齿轮。单击它并单击Reset。您在代码中设置的值将在检查器中设置。但要小心,所有班级成员也将被重置。

Reset

如果需要,您可以覆盖MonoBehaviour's Reset function

另一种解决方法是设置变量private,让Unity重新整理您的组件并将该成员放回public。 (但它可能会破坏您的代码,因为其他脚本可能需要引用您的类成员)

答案 1 :(得分:0)

  

更改公共成员声明和初始化旁边的值不会在检查器中发生更改。 Unity序列化您的公共变量后,将保留该值,直到您在检查器中更改它为止。

要添加@Hellium的答案,您可以将[System.NonSerialize]属性添加到您的变量中,以便它不会被序列化。

有关该主题的更多信息:[NonSerialized] vs [HideInInspector] question

示例:

[System.NonSerialized]
public float enemySpeed = 1;

这样做的一个副作用是,您无法再通过脚本更改检查器中的变量。