2018 Unity Void Update () не обновляет вторую строку? - PullRequest
0 голосов
/ 23 января 2019

Итак, я делаю игру для питомцев Тамагочи, и в статистике строки внутри Void Update (), похоже, обновляют только первую строку статистики в _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 голосов
/ 23 января 2019

Кажется, что метод updateStatus вызывается только один раз, в Start методе другого сценария.

Глядя на ваши сценарии, вы можете пропустить функцию Update():

void Update()
{
    updateStatus();
}

Я бы также поставил несколько точек останова в коде, где обновляются _hunger и _happiness. Или сделайте несколько звонков Debug.Log(...), если хотите. Важно убедиться, что значения регулярно обновляются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...