센로그
[PUN2] Custom Property (커스텀 프로퍼티) 본문
◆ 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