每秒向变量添加一个点都不起作用(Unity3d)

时间:2016-05-15 14:33:04

标签: c# unity3d static

public static int pscore = 0;
void Start()
{
     InvokeRepeating("AddToMoney",1, 1);  
}
void AddToMoney ()
{
     pscore++;
}

我有这个代码每秒向整数pscore添加一个点。但是现在它增加了2分而不是1分。是因为它是静态的吗?如果是这样,我该如何解决?或者如何在不使用静态的情况下将一个变量从脚本转移到另一个脚本?

注意:我无法在unity3d论坛上得到答案,这就是我在这里问的原因。

1 个答案:

答案 0 :(得分:1)

  

每秒为整数pscore添加一个点

bool keepIncrementing = false;
public static int pscore = 0;
void Start()
{
    StartCoroutine(IncementEachSecond());
}

IEnumerator IncementEachSecond()
{
    keepIncrementing = true;
    while (keepIncrementing)
    {
        pscore++;
        yield return new WaitForSeconds(1);
    }
}

void stopIncrementing()
{
    keepIncrementing = false;
}
  

如何在不使用脚本的情况下将一个变量从脚本传输到另一个脚本   使用静态

public class ScriptA : MonoBehaviour{

    public int pscore = 0;

    void Start()
    {

    }
}

pscore中的ScriptA访问变量ScriptB

public class ScriptB : MonoBehaviour{

    ScriptA scriptInstance = null;  

    void Start()
    {
      GameObject tempObj = GameObject.Find("NameOfGameObjectScriptAIsAttachedTo");
      scriptInstance = tempObj.GetComponent<ScriptA>();
      scriptInstance.pscore = 5;
    }
}