Скрипт для мультиплеера, который создает экземпляры игроков.
Объект мастер-клиента получает ID, который генерируется случайным образом.
Объектам остальных клиентов их ID не доходят - пробовал напрямую, через функую с атрибутом [PunRPC], а так же через ее аргумент.
using UnityEngine;
using Photon.Pun;
using System.IO;
public class PhotonPlayer : MonoBehaviourPun
{
public PhotonView PV;
public int playerID;
public GameObject myUnit;
public void Start()
{
PV = GetComponent<PhotonView>();
playerID = Random.Range(0, GameSetUp.GS.spawnPoints.Length);
if (PV.IsMine)
{
myUnit = PhotonNetwork.Instantiate(Path.Combine("PhotonPrefabs", "UnitAvatar"),
GameSetUp.GS.spawnPoints[playerID].position,
GameSetUp.GS.spawnPoints[playerID].rotation, 0);
PV.RPC("RPC_ID", RpcTarget.AllBuffered, playerID);
//myUnit.GetComponent<UnitSetup>().playerID = playerID;
//myUnit.tag = "Player" + playerID;
}
}
[PunRPC]
public void RPC_ID(int ID)
{
myUnit.GetComponent<UnitSetup>().playerID = ID;
myUnit.tag = "Player" + ID;
}
//версия без аргумента
/*
[PunRPC]
public void RPC_ID()
{
myUnit.GetComponent<UnitSetup>().playerID = playerID;
myUnit.tag = "Player" + playerID;
}
*/
}
На объектах находится PhotonViewer, объекты синхронизированы друг с другом, проблем с управлением не наблюдается.
Необходима лишь передача индивидуальных номеров и тегов, которая по каким-то причинам не происходит.