씬에 타임매니저라는 오브젝트를 만들고 타임매니저라는 스크립트를 만들어서
public float currentPlayTime = 0;
업데이트에서 시간변수에 += Time.deltaTime으로 시간을 계속 체크하고
private void Update()
{
if (PhotonNetwork.IsMasterClient)
{
currentPlayTime += Time.deltaTime;
}
}
PUNRPC로 함수 하나 맹글어서
public void SetPlaytime(float time)
{
currentPlayTime = time;
}
시간 변수를 기억하게 하고
public override void OnPlayerEnteredRoom(Player newPlayer)
{
if (PhotonNetwork.IsMasterClient)
{
photonView.RPC("SetPlaytime", newPlayer, currentPlayTime);
}
}
포톤에 마스터 클라이언트가 아닌 다른 상대방이 들어오면 RPC로 현재경과한 시간을 쏴주는거 까진 했거든?
1. 그럼 이 타임매니저 오브젝트에도 포톤뷰 스크립트를 붙여야해?
2. 아니라면 이 시간을 받을 스크립트에서 currentPlayTime을 받으려면 어떤식으로 해야해? 타임매니저 클래스 가져와서 TM.currentPlayTime으로 하면
3. 해당 스크립트에서 타임매니저에서 최초값인 0이 아닌 RPC로 쏴보낸 지나간 시간으로 가져오는거야?
1. 넹 2. 맞으니까 답 안해도 되는거겠지 3. 마스터가 아닌 클라이언트들은 접속하면 마스터가 보낸 RPC에 의해 SetPlaytime을 실행하게 될거임. 따라서 ㅇㅇ
아.. 그러면 그냥TM.currentPlayTime 이거만 해도 3번대로 지나간 시간 그 자체가 받아와지는거야?
접속한 뒤에, SetPlayTime이 실행된 뒤 currentPlaytime을 받아오는 게 맞다면 ㅇㅇ. 모든 상황에서 접속 한 뒤 CurrentPlayTime을 받는게 먼저인지 RPC로 currentPlayTime을 받는게 먼저인지 보장할 수 없음. Action같은걸로 이벤트 등록해놓으면 보장할 수 있음.