Я работаю над многопользовательской пошаговой игрой с использованием PUN 2. У меня проблемы с созданием объекта после загрузки сцены с помощью RaiseEvent.
Все началось с этой проблемы: Синхронизация GameObjects с игроками , но мне кажется, сначала нужно решить другие проблемы. Позвольте мне объяснить немного.
У меня есть сцена с кнопкой «Присоединиться к очереди», которая создает комнату, если нет других доступных, и MaxPlayerCount = 2. Поэтому после присоединения второго игрока я использую Photon.LoadLevel (sceneName) для загрузки игровой сцены. На игровой сцене у меня есть компонент, который порождает некоторые объекты. В этом компоненте я использую PhotonNetwork.RaiseEvent для отправки этих объектов другим игрокам.
PhotonView photonView = containerTile.GetComponent<PhotonView>();
if(PhotonNetwork.AllocateViewID(photonView))
{
object[] data = new object[]
{
containerTile.transform.position, containerTile.transform.rotation, photonView.ViewID
};
RaiseEventOptions raiseEventOptions = new RaiseEventOptions
{
Receivers = ReceiverGroup.Others,
CachingOption = EventCaching.AddToRoomCache
};
SendOptions sendOptions = new SendOptions
{
Reliability = true
};
PhotonNetwork.RaiseEvent(CustomEvent, data, raiseEventOptions, sendOptions);
}
public void OnEvent(EventData photonEvent)
{
if(photonEvent.Code == CustomEvent)
{
object[] data = (object[])photonEvent.CustomData;
GameObject containerTile = (GameObject)Instantiate(containerPrefab, (Vector3)data[0], (Quaternion)data[1]);
PhotonView photonView = containerTile.GetComponent<PhotonView>();
photonView.ViewID = (int)data[2];
}
}
«CustomEvent» - это пользовательское событие, которое я пытаюсь получить, реализовав обратный вызов OnEvent с помощью Интерфейс IOnEventCallback. Когда OnEvent вызывается EventData, это код «PropertiesChanged (253)», который из документации кажется, что он вызывается, когда MasterClient изменил комнату, поэтому я предполагаю, что PhotonNetwork.LoadLevel делает это.
Их документация говорит: «Когда вы вызовите OpSetProperties с опцией широковещания "on", это событие вызывается. Оно содержит устанавливаемые свойства. " Я пытаюсь пропустить этот код события 253, и я понятия не имею, как мне отключить «опцию широковещания» или какой подход я пытаюсь достичь.
Спасибо за чтение!