Visual studio 变量未统一更新

Visual studio 变量未统一更新,visual-studio,unity5,Visual Studio,Unity5,所以在visualstudio中,行是这样的 public float enemySpeed = 0.2f; 但是在Unity中,当我将其更改为enemySpeed=1时,即使我停止“游戏”并重新启动Unity,即使脚本中的enemySpeed=0.2f,它也会保持这样的状态。在inspector中更改公共成员声明和初始化旁边的值不会更改。一旦Unity序列化了公共变量,该值将一直保留,直到您在inspector中更改它为止 但是,如果您在inspector中查看组件,您将看到右侧有一个小齿轮

所以在visualstudio中,行是这样的

public float enemySpeed = 0.2f;

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

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

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

如果需要,可以重写



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

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

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

如果需要,可以重写


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


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

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

有关此主题的更多信息:

例如:

[System.NonSerialized]
public float enemySpeed = 1;
这样做的一个副作用是,您将无法再从检查器中更改变量,只能通过脚本进行更改


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

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

有关此主题的更多信息:

例如:

[System.NonSerialized]
public float enemySpeed = 1;

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

这是一个很好的技巧!也许,把
[System.NonSerialize]
放进去,让Unity完成他的工作,然后删除属性就可以了?是的,每次他想“重置”变量时,他都必须执行这个过程。但是由于他没有提到他正在修改inspector中的变量,我认为他只需要添加它,他的问题就会得到解决。好把戏!也许,把
[System.NonSerialize]
放进去,让Unity完成他的工作,然后删除属性就可以了?是的,每次他想“重置”变量时,他都必须执行这个过程。但是由于他没有提到他正在修改inspector中的变量,我认为他只需要添加它,他的问题就会得到解决。