在Unity中,设置检视面板中的值与设置默认值是否相同?

5

我对Unity非常陌生,因此这可能是一个愚蠢的问题,但在检视器中设置值是否与在代码中设置默认值相同?

举个例子:

public string name; //then go to inspector and set it as "Bob".

或者

public string name = "Bob";

所以,重新表述一下,以上这些操作能够达到相同的效果吗?
2个回答

8
这些操作会达到相同的效果吗?
是的,它们都能在点击“播放”按钮后将name变量初始化为“Bob”的值。
强烈建议不要从代码中设置默认值,如果你将字段变量设置为public。原因是你会遇到一个错误,需要花费时间去发现和修复。
例如,假设你有以下内容:
public string name = "Bob";

然后你去编辑器让它编译。之后,你回到代码并将其更改为"Jake"

public string name = "Jake";

在编程时,你可能会认为变量的值已经变成了"Jake",并期望代码基于"Jake"的值进行操作。但是这样做将失败,因为name仍然是"Bob"。直到重命名name变量或包含name变量的脚本/组件被重置之前,编辑器中将显示name变量的最新值: enter image description here 这是一个浪费时间的问题,而且确实有人还在遇到这个问题。如果你想把变量public,但不想从编辑器中对它进行赋值,则可以使用[HideInInspector]属性来隐藏它。
[HideInInspector]
public string name = "Bob";

这样做可以确保您不会在编辑器中错误地更改它,并导致问题,同时允许其他脚本访问您的变量。


这仅适用于变量声明的位置。您可以在稍后的函数或属性中更改变量,而更改应该会生效,没有任何问题。


1
并不完全正确:当您第一次将脚本附加到对象并且在其代码中初始化了全局变量时,Unity会使用这些值设置相应的检视面板数值。但是,一旦变量在检视面板中设置,只能通过检视面板本身进行更改,不能再通过代码进行更改。显然,这仅适用于不依赖于资源(原始类型、Vector2、Vector3等)的类型。对于预制件、材质等,则唯一的方法是始终从检视面板传递。总之:永远不要依赖于代码初始化!请务必确保它们通过检视面板正确地设置为所需的值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接