Синхронизировать текстовые объекты в Unity - PullRequest
0 голосов
/ 17 мая 2018

У меня есть префаб, на котором есть текстовый объект, и этот текст представляет собой счетчик продолжительности жизни префаба, который увеличивается каждую секунду.Сценарий прекрасно работает в режиме «человек против компьютера», но когда я пытаюсь сделать клиент хоста, цифры всегда различаются на стороне клиента.Как я могу позволить отображаемым на них числам синхронизироваться вместе?

public class Timer : MonoBehaviour
{

public Planet pl;


private bool hasDone = false;

public int timeleft =6;
public Text countdownText;

// Use this for initialization
void Start()
{
    timeleft = Random.Range (0, 31);
}
// Update is called once per frame
void Update()
{
    countdownText.text = ("" + timeleft);
    if (pl.get_owner () != null && hasDone == false) {
        StartCoroutine("LoseTime");
        hasDone = true;
    }

    if (pl.get_owner () == "Human") {
        countdownText.color = new Color (0f, 0.5f, 1f, 1f);
    }
    if (pl.get_owner () == "Computer") {
        countdownText.color = new Color (1f, 0.5f, 0f, 1f);
    }

    if (pl.get_collision () > 0) {
        timeleft -= 1;
        pl.decrease_collision ();
    }
}
IEnumerator LoseTime()
{
    if (pl.get_owner () != null) {
        while (true)
        {
            yield return new WaitForSeconds(1);
            timeleft++;
        }
    }
}
}

1 Ответ

0 голосов
/ 17 мая 2018

Я думаю, вы ищете атрибут syncvar: https://docs.unity3d.com/ScriptReference/Networking.SyncVarAttribute.html

[SyncVar]
public int timeleft =6;

Кроме того, только сервер должен изменять значение. Добавьте следующий код во все местоположения, где вы бы изменили timeleft.

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