为什么我的Unity C#脚本中的变量重置为0

时间:2016-01-05 13:47:06

标签: c# unity3d

我有一个简单的项目,在场景中有一个按钮,当点击时,在这个脚本中启动StartWorking功能:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class DoWork : MonoBehaviour {

  public int Cash = 5;

  public void StartWorking() {
        Debug.Log (Cash);
        Debug.Log ("Ran!");
        Cash++;
        Debug.Log (Cash);
  }
}

当跑步并点击按钮时,控制台会说:

0
  冉!
  1

而非预期:

5
  冉!
  6

知道变量为什么不保持它在类中设置初始值?

感谢。

3 个答案:

答案 0 :(得分:4)

当变量是公共的时,脚本上的值无关紧要。您可能在Inspector中将其设置为0,这是运行时使用的值。如果要使用脚本的值,则需要单击组件设置轮和重置组件。

如果您必须查看该值但想要使用脚本值,请将其设为私有,然后单击检查器顶部锁定旁边的小向下箭头。这也将显示私人会员。你无法通过检查员改变它们,只需看看。

答案 1 :(得分:3)

Cash变量是公开的,我认为您更改了Cashinspector的值。

在检查器中更改变量的值后,unity将忽略代码中的初始值,并将其替换为检查器中的值。

尝试将public int Cash = 5;更改为private int Cash = 5;,您将获得所需的结果

答案 2 :(得分:1)

您的脚本是否链接到场景中的对象?如果是这种情况,可以在检查器中编辑“cash”变量并覆盖脚本中的初始化。