Фотонная сеть Unity3D - RPC для создания объекта - PullRequest
0 голосов
/ 02 марта 2019

Я хочу спросить о Photon Network в Unity3D.Я только недавно начал изучать его, и я хочу попытаться создать экземпляр объекта в сети.

Я пытаюсь создать экземпляр каждого объекта с помощью RPC (поэтому он будет вызываться локально и может легко изменять свойства проигрывателя, я думаю,).И вот мой код для создания экземпляра объекта с помощью RPC, очень простой, хотя.

public MultiplayerManager instance;
private void Awake()
{
    if (instance == null)
        instance = this;

    else
    {
        Destroy(this.gameObject);
    }
}
void Start()
{
    photonView.RPC("RPC_CreatePlayer", RpcTarget.All);
}


[PunRPC] 
private void RPC_CreatePlayer()
{
    Vector3 instantiatedPosition;
    instantiatedPosition.x = Random.Range(45f, 70f);
    instantiatedPosition.y = 40f;
    instantiatedPosition.z = Random.Range(220f, 260f);
    GameObject instantiatedPlayer = PhotonNetwork.Instantiate("player", instantiatedPosition, Quaternion.identity, 0);
    instantiatedPlayer.GetComponent<MeshRenderer>().material = LocalPlayerManager.instance.mat;
}

Результат на самом деле успешен.Каждый объект создан, но ошибка:

Когда в комнате N игроков, объект создается N раз.Например, в комнате 3 игрока, и когда я начну игру, будет создано 9 объектов.

Есть ли у каждого игрока свой MultiplayerManager, поэтому каждый из них будет отправлять RPC другим игрокам?Должен ли я просто поставить условие PhotonNetwork.isMasterClient , тогда он будет отправлять RPC?(ну, на самом деле это сработало, но разве это лучшее решение?)

Я пытаюсь это выяснить, но я не могу: "Д-ха, что-то не так? Спасибо.

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