所以在visual studio line中
public float enemySpeed = 0.2f;
但在Unity中,当我将其更改为enemySpeed = 1
时,即使我停止游戏,也会保持这种状态。并重新启动Unity甚至脚本中的enemySpeed = 0.2f
。
答案 0 :(得分:1)
更改公共成员声明和初始化旁边的值不会在检查器中更改。一旦Unity序列化您的公共变量,该值将保留,直到您在检查器中更改。
但是,如果您查看组件,在检查器中,您会在右侧看到一个小齿轮。单击它并单击Reset
。您在代码中设置的值将在检查器中设置。但要小心,所有班级成员也将被重置。
如果需要,您可以覆盖MonoBehaviour's Reset function。
另一种解决方法是设置变量private
,让Unity重新整理您的组件并将该成员放回public
。 (但它可能会破坏您的代码,因为其他脚本可能需要引用您的类成员)
答案 1 :(得分:0)
更改公共成员声明和初始化旁边的值不会在检查器中发生更改。 Unity序列化您的公共变量后,将保留该值,直到您在检查器中更改它为止。
要添加@Hellium的答案,您可以将[System.NonSerialize]
属性添加到您的变量中,以便它不会被序列化。
有关该主题的更多信息:[NonSerialized] vs [HideInInspector] question
示例:
[System.NonSerialized]
public float enemySpeed = 1;
这样做的一个副作用是,您无法再通过脚本更改检查器中的变量。