Я пытаюсь случайным образом сгенерировать такие предметы, как звезда, сердце, алмаз, монета ... на карте с параметром - максимальное количество предметов в одной комнате. В своем методе я использовал главный клиент (PhotonNetwork.IsMasterClient
) комнаты для запуска функции генерации элементов. Только главный клиент создает и управляет количеством элементов на карте. если главный клиент покидает игру, то другой игрок назначается главным клиентом с использованием метода OnMasterClientSwitched()
и продолжает генерировать и управлять количеством элементов.
Однако проблема заключается в том, когда главный клиент покидает игру, Я не могу передать параметр - ItemNumber
, то есть подсчитывать количество элементов на карте, новому главному клиенту. И всегда начинается с 0. Знаете ли вы, как передать параметр от главного клиента к новому главному клиенту, когда он покидает игру? Или каким-либо способом создавать и управлять количеством элементов на карте в одной комнате? Это мой код:
void Update()
{
if (photonView.IsMine && PhotonNetwork.IsMasterClient)
{
StartCoroutine(spawnRandomItems());
spawnWait = Random.Range(spawnLeastWait, spawnMostWait);
}
}
private IEnumerator spawnRandomItems()
{
yield return new WaitForSeconds(startWait);
while (ItemNumber < maxItemNumber)
{
int randItemType = Random.Range(0, 4);
Vector3 spawnPosition = new Vector3(Random.Range(-17f, 17f), 1f, Random.Range(-17f, 17f));
Quaternion spawnRotation = Quaternion.Euler(-90, 0, 0);
PhotonNetwork.InstantiateSceneObject(spawnItemObjects[randItemType].name, spawnPosition, spawnRotation);
ItemNumber++;
yield return new WaitForSeconds(spawnWait);
}
}
Я тоже использовал OnPhotonSerializeView (), но он тоже не работал.
public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{
if (stream.IsWriting)
{
stream.SendNext(ItemNumber);
}
else if (stream.IsReading)
{
ItemNumber = (int)stream.ReceiveNext();
}
}
Большое спасибо !!!!!