2018 Unity Void Update()不更新第二行吗?

时间:2019-01-23 04:21:09

标签: c# unity3d int

因此,我正在制作Tamagotchi宠物游戏,并且在统计信息中,“无效更新()”中的行似乎只更新_Happiness中的统计信息第一行,而不是_hunger中的第一行。有什么原因可能会发生这种情况?相对于统计信息,我的原型中还存在另一个脚本。

public GameObject happinessText;
public GameObject hungerText;

public GameObject robot;
// Update is called once per frame
void Update()
{
    happinessText.GetComponent<Text>().text = "" + robot.GetComponent<Robot>().happiness;
    hungerText.GetComponent<Text>().text = "" + robot.GetComponent<Robot>().hunger;
    //happinessText.GetComponent<Text>().text = "" + robot.GetComponent<Robot>().happiness;
}

其他脚本:

public int _hunger;
public int _happiness;


void Start()
{ 
PlayerPrefs.SetString("then", "05/06/2016 11:20:12");
    updateStatus();
}



    void updateStatus()
{
   if (!PlayerPrefs.HasKey("_hunger"))
    {
        _hunger = 100;
        PlayerPrefs.SetInt("_hunger", _hunger);

    } else {
        _hunger = PlayerPrefs.GetInt("_hunger");
    }

    if (!PlayerPrefs.HasKey("_happiness"))
    {
        _happiness = 100;
        PlayerPrefs.SetInt("_happiness", _happiness);

    } else {

        _happiness = PlayerPrefs.GetInt("_happiness");

    }

    if (!PlayerPrefs.HasKey("then")) //{
        PlayerPrefs.SetString("then", getStringTime());

        TimeSpan ts = GetTimeSpan();

        _hunger -= (int)(ts.TotalHours * 2);
        if (_hunger < 0)
            _hunger = 0;

        _happiness -= (int)((100 - _hunger) * ts.TotalHours / 5);

        if (_happiness < 0)
            _happiness = 0;

    }

public int hunger
{
    [OnSerialized]
    get { return _hunger; }
    set { _hunger = value; }
}

public int happiness
{
    [OnSerialized]
    get { return _happiness; }
    set { _happiness = value; }
}

1 个答案:

答案 0 :(得分:0)

在其他脚本的updateStatus方法中,似乎Start方法仅被调用了一次。

在查看脚本时,您似乎可能缺少Update()函数:

void Update()
{
    updateStatus();
}

我还将在更新_hunger_happiness的代码中添加一些断点。或者,如果您愿意,可以在这里拨打几个Debug.Log(...)电话。重要的是要确认值是否定期更新。