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

标签 c# unity3d

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

例子:

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

或者
public string name = "Bob";

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

最佳答案

will these actions above achieve the same effect?



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

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

例如,假设你有这个:
public string name = "Bob";

然后你去编辑器让它编译。稍后,您返回到代码并将其更改为“Jake”:
public string name = "Jake";

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

enter image description here

这是一个浪费时间的问题,是的,有些人仍在经历它。如果要使变量public但不想从编辑器分配它,使用 [HideInInspector] 属性来隐藏它。
[HideInInspector]
public string name = "Bob";

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

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

关于c# - 在检查器中设置值是否与在 Unity 中设置默认值相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51558068/

相关文章:

unity3d - 无法使用 Unity 3D 物理阻止球弹跳

c# - 如何围绕 Random.Next() 限制进行设计?

c# - 使用 UnityAction 传递参数

c# - 运行应用程序的用户的AppData文件夹

c# - ImageSlider内存泄漏c#

c# - OAuth 2.0 授权服务器

c# - 在 WP7 中滑动带有固定页眉和页脚的图像

c# - 自定义标签在Web浏览器DOM C#中不被视为HTMLelement/parent

c# webClient.DownloadFile 不下载,它只是创建一个空文本文件

c# - MD5 GetHash 只能在 Unity Editor 中使用吗?