센로그

[PUN2] Custom Property (커스텀 프로퍼티) 본문

게임/PUN2(Unity)

[PUN2] Custom Property (커스텀 프로퍼티)

seeyoun 2023. 1. 20. 17:09

◆ Custom Property (커스텀 프로퍼티)

포톤에서는 Player나 Room에 대한 CustomProperty를 설정할 수 있다. 

 

CustomProperty는 Hashtable을 사용하여 네트워크상에서 정보를 관리하며, 많이 바뀌지 않는 설정사항을 동기화할 때 주로 사용한다.

 

※ Hashtable 이란?
{Key : Value}로 구성된 자료구조로, Key를 통해서 Value를 꺼내올 수 있다.

Key는 string 타입이어야 하고,
Value는 byte, boolean, short, int, long, float, double, string, <type> 배열, hashtable, dictionary, Vector2, Vector3, Quaternion, PhotonPlayer 타입이 될 수 있다.

 


◆ PhotonNetwork.LocalPlayer.SetCustomProperties(Hashtable)

플레이어의 커스텀 프로퍼티를 설정해 줌

using Hashtable = ExitGames.Client.Photon.Hashtable; 필요


[예시]

//총 전환 동기화
        if (PV.IsMine)
        {
            Hashtable hash = new Hashtable();
            hash.Add("itemIndex", itemIndex);
            PhotonNetwork.LocalPlayer.SetCustomProperties(hash);
        }

 
 


◆ void OnPlayerPropertiesUpdate(Player, Hashtable)

using Hashtable = ExitGames.Client.Photon.Hashtable; 필요
MonoBehaviourPunCallbacks 클래스 상속 필요(콜백 받으려면 필요함)

네트워크상 클라이언트의 커스텀 프로퍼티가 업데이트되면 실행되는 콜백

 
[예시]

public override void OnPlayerPropertiesUpdate(Player targetPlayer, Hashtable changedProps)
    {
        if(!PV.IsMine && targetPlayer == PV.Owner)
        {
            EquipItem((int)changedProps["itemIndex"]);
        }
    }

 
 

■ changedProps.ContainsKey("속성 이름")

업데이트된 속성 중에 "속성 이름"이 있는지 확인(bool)

 
[예시]

//Update된 속성이 kills 또는 deaths라면,
        if (changedProps.ContainsKey("kills") || changedProps.ContainsKey("deaths"))
        {
            UpdateStats();
        }

 

'게임 > PUN2(Unity)' 카테고리의 다른 글

[PUN2] Player 클래스  (0) 2023.02.15
[PUN2] PunRPC / PV.RPC  (0) 2023.01.20
[PUN2] PhotonView - Transform, Animator, Rigidbody  (0) 2023.01.20
[PUN2] PUN2 개요 / MonoBehaviourPunCallbacks 콜백  (0) 2023.01.12
[PUN2] Photon PUN2 Setup  (0) 2023.01.09
Comments