나는 새로운 사람이 가입하거나 특정 장소에서 그를 낳을 때 플레이어 번호를 지정하기 위해 얼마나 많은 플레이어가 게임에 있는지 알 필요가있는 멀티 플레이어 게임을 만들고 있습니다.Photon Unity : 변수가 PunRPC를 사용하여 동기화되지 않습니다.
public int numPlayer;
[PunRPC]
public void GetPlayers()
{
GetComponent().setNumOfPlayers(numPlayer);
}
[PunRPC]
public void SetPlayers(int num)
{
numPlayer = num;
}
0 : 그 내가 얻고 NetworkPlayerManager 클래스에 플레이어의 변수를 설정하기 위해 호출 PunRPC 방법은
:
이
는 같은 gameManager의 경위는 모습입니다그리고 그녀의 새로운 플레이어가 GameManager 클래스를 인스턴스화 할 때 나는 그들에게 전화하는 방법은 다음과 같습니다 하나의 플레이어가 게임에 들어가면이 방법을 사용
GetComponent().RPC("GetPlayers", PhotonTargets.AllViaServer);
m_Tanks.m_Instance =
PhotonNetwork.Instantiate("Tank", m_Spawns[numOfPlayers].position, m_Spawns[numOfPlayers].rotation,0) as GameObject;
numOfPlayers += 1;
m_Tanks.m_PlayerNumber = numOfPlayers;
GetComponent().RPC("SetPlayers", PhotonTargets.AllViaServer, numOfPlayers);
는 값이 1에서 유지하고는 변경되지 않습니다. 그것은 변수가 동기화되지 않는 것과 같고 모든 새로운 인스턴스에 대해 플레이어로 설정됩니다.
OnPhotonSerializeView를 사용하여 동기화를 시도했지만 아무 것도 사용하지 않았습니다 :
if (stream.isWriting)
{
stream.SendNext(numPlayer);
}
else
{
numPlayer = (int)stream.ReceiveNext();
}
변수를 동기화하는 방법에 대한 개념 오류가 있다고 생각합니다. 나는 수색하고 보았지만, 내가 잘못하고있는 것을 발견하지 못했습니다.
그건 내가 결국 만들었습니다. 대답 해 주셔서 감사합니다 ^^ – Zoroastiran