※ 학습내용을 바탕으로 틀린 사항이 포함되어 있을수도 있습니다. 후기 남겨주시면 제대로 수정하고 학습하겠습니다
커스텀 프로퍼티란 HashTable을 사용해서 딕셔너리처럼 사용하는 방법인데 이를 Photon에서 동기화 기법으로 설정하였다. HashTable은 암호나 보안이 중요할 때 사용하는데 많이 호출되지 않을때 커스텀 프로퍼티를 사용하여 동기화를 시켜주면 좋다
첫번째 예시로 준비하는 방법이다 이 함수는 Photon.Realtime;을 사용한 Player의 상태에 대한 커스텀 프로퍼티이다.
CustomProperties : 읽기 전용
SetCustomProperties : 설정
OnPlayerPropertiesUpdate : 커스텀 프로퍼티가 변경될 떄 콜백되는 함수
*********RoomManager********
bool IsReady;
public void ReadyPropertyUpdate()
{
ExitGames.Client.Photon.Hashtable readyProperty = new ExitGames.Client.Photon.Hashtable();
readyProperty["Ready"] = isReady;
PhotonNetwork.LocalPlayer.SetCustomProperties(readyProperty);
}
public void ReadyCheck(Player player)
{
if (player.CustomProperties.TryGetValue("Ready", out object value))
{
readyText.text = (bool)value ? "Ready" : "NotReady";
readyButtonImage.color = (bool)value ? Color.red : Color.yellow;
}
}
*********NetworkManager**********
public override void OnPlayerPropertiesUpdate(Player targetPlayer, ExitGames.Client.Photon.Hashtable changedProps)
{
roomManager.playerPanelDic[targetPlayer.ActorNumber].ReadyCheck(targetPlayer);
}
위의 ReadyPropertyUpdate에서 커스텀 프로퍼티를 설정해주고 OnPlayerPropertiesUpdate에서 커스텀 프로퍼티를 사용하는 형식인데 이 때 Dictionary를 통해 해당 플레이어의 번호에 따른 "Ready"의 값을 보여준다.