Хранение Ping.time в поплавке (Unity 2018) - PullRequest
0 голосов
/ 21 января 2020

Любой знает любой метод, как я могу сохранить Ping в плавающем значении, чтобы позже я мог отобразить его на графике. В настоящее время с кодом ниже, Pinging показывает только -1, в то время как в тексте отображается правильный пинг. Спасибо

Пинг-код

IEnumerator TestPing()
{
    var PingTest = new Ping("http://localhost:8081/website/index.php");
    pinging = PingTest.time;

    while (!PingTest.isDone)
        yield return new WaitForSeconds(.1f);

    pingText.text = (PingTest.time).ToString() + " ms";
}

Ответы [ 2 ]

2 голосов
/ 21 января 2020

Кажется, вы можете захотеть узнать время пинга после isDone?

IEnumerator TestPing()
{
    var PingTest = new Ping("http://localhost:8081/website/index.php");

    while (!PingTest.isDone)
        yield return new WaitForSeconds(.1f);

    pinging = PingTest.time;
    pingText.text = pinging + " ms";
}
1 голос
/ 21 января 2020

PingTest.time - это int - тип значения. И pinging - это float - также тип значения. Это означает, что когда вы присваиваете pinging = PingTest.time, вы присваиваете текущее значение PingTest.time для pinging и что независимо от того, что произойдет с PingTest.time после этого, значение pinging не изменится, если вы не обновите его ,

Если вы хотите, чтобы pinging имел значение PingTest.time после завершения проверки связи, вы должны установить его после завершения проверки связи. Для этого вы можете использовать WaitUntil, например:

IEnumerator TestPing()
{
    var PingTest = new Ping("http://localhost:8081/website/index.php");

    yield return new WaitUntil(()=>PingTest.isDone);

    pinging = PingTest.time;
    pingText.text = (PingTest.time).ToString() + " ms";
}

Кстати, типичным соглашением для C# является именование локальных переменных в camelCase как pingTest.

...