2017-03-10 7 views
0

나는 새로운 사람이 가입하거나 특정 장소에서 그를 낳을 때 플레이어 번호를 지정하기 위해 얼마나 많은 플레이어가 게임에 있는지 알 필요가있는 멀티 플레이어 게임을 만들고 있습니다.Photon Unity : 변수가 PunRPC를 사용하여 동기화되지 않습니다.

public int numPlayer; 

[PunRPC] 
public void GetPlayers() 
{ 
GetComponent().setNumOfPlayers(numPlayer); 
} 

[PunRPC] 
public void SetPlayers(int num) 
{ 
numPlayer = num; 
} 
0 : 그 내가 얻고 NetworkPlayerManager 클래스에 플레이어의 변수를 설정하기 위해 호출 PunRPC 방법은

Inspector

:

는 같은 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(); 
} 

변수를 동기화하는 방법에 대한 개념 오류가 있다고 생각합니다. 나는 수색하고 보았지만, 내가 잘못하고있는 것을 발견하지 못했습니다.

답변

0

당신은 항상 PhotonNetwork.playerList.length를 통해 방에있는 플레이어 수를 얻을 수 있습니다. 그것은 아마도 당신이하고있는 것보다 쉽고, 확실히 읽기가 쉽습니다. 지속적으로 사람들의 수를 확인할 수 있으며, 숫자가 증가 할 때마다 무엇인가 할 수 있습니다.

+0

그건 내가 결국 만들었습니다. 대답 해 주셔서 감사합니다 ^^ – Zoroastiran