Photon CustomProperty

장현태입니다·2025년 7월 21일

※ 학습내용을 바탕으로 틀린 사항이 포함되어 있을수도 있습니다. 후기 남겨주시면 제대로 수정하고 학습하겠습니다

CustomProperty

커스텀 프로퍼티란 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"의 값을 보여준다.

0개의 댓글