Как добавить свойство и синхронизировать его при появлении игрока

Возникли небольшие проблемы с пониманием того, как добавить и синхронизировать свойство theNumber.

1) у меня два игрока

2) Когда игроки появляются, я хочу, чтобы theNumber добавил один, чтобы каждый игрок сообщал другой порядковый номер

Я просто не могу заставить его работать и буду признателен за помощь.

Следующий код размещается на игроках, которые появляются.

using UnityEngine;
using System.Collections;
using UnityEngine.Networking;

public class Player : NetworkBehaviour {

[SyncVar] public int theNumber;
private int _nr;

public override void OnStartLocalPlayer () {
    print ("OnStartLocalPlayer");
    _nr = theNumber;
    CmdX (theNumber);
    DoCalc ();
}

[Command]
void CmdX (int myInt) {
    print ("theNumber: " + myInt);
}

[Client]
void DoCalc () {
    _nr++;
    CmdPrint (_nr);
}

[Command]
void CmdPrint (int nr) {
    theNumber = nr;
    print ("CLIENT CONNECTED WITH THE FOLLOWING NUMBER: " + theNumber);
}

}

person PeterK    schedule 18.01.2016    source источник


Ответы (1)


Вы захотите изменить значение на сервере при подключении нового клиента и отправить его вниз. Судя по всему, вы изменяете значение только на клиенте. Кроме того, ваш атрибут [SyncVar] в theNumber будет синхронизировать значение между клиентами, поэтому он может изменить его на одно и то же значение для каждого клиента.

Подробнее читайте здесь: http://docs.unity3d.com/ScriptReference/Networking.SyncVarAttribute.html

person Community    schedule 18.01.2016