在检查器中设置值是否与在 Unity 中设置默认值相同?

FIC*_*EKK 3 c# unity-game-engine

我对 Unity 很陌生,所以这可能是一个愚蠢的问题,但是在检查器中设置值是否与在代码中设置默认值相同?

例子:

public string name; //then go to inspector and set it as "Bob".
Run Code Online (Sandbox Code Playgroud)

或者

public string name = "Bob";
Run Code Online (Sandbox Code Playgroud)

那么,换个说法,上面的这些动作会达到同样的效果吗?

Pro*_*mer 5

上面这些动作会不会达到同样的效果呢?

是的,他们都会完成同样的事情。name单击“播放”按钮后,它们都将使用“Bob”值初始化变量。

如果您将字段变量设为 ,强烈建议您不要从代码中设置默认值public。这样做的原因是你会遇到一个需要你花时间去发现和修复的错误。

例如,假设你有这个:

public string name = "Bob";
Run Code Online (Sandbox Code Playgroud)

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

public string name = "Jake";
Run Code Online (Sandbox Code Playgroud)

在编程时,您仍然会认为值现在是“Jake”,并期望您的代码基于“Jake”值做一些事情。这将失败,因为name仍然是“鲍勃”。name 变量的最新值显示在编辑器中,直到name变量重命名或保存该name变量的脚本/组件被重置:

在此处输入图片说明

这是一个浪费时间的问题,是的,有些人仍在经历它。如果您想创建变量public但不想从编辑器分配它,请使用该[HideInInspector]属性将其隐藏。

[HideInInspector]
public string name = "Bob";
Run Code Online (Sandbox Code Playgroud)

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


这仅适用于声明变量的地方。您可以稍后更改函数或属性中的变量,更改应该会生效而不会出现任何问题。