// Pun을 사용할때 기본적으로 필요함
using Photon.Pun;
// ??
using Photon.Realtime;
콜백
MonoBehaviourPunCallbacks : 네트워크 이벤트 감지할 때 사용
// 버전 1.0으로 설정 : 같은 버전의 플레이어끼리만 매칭 되도록
PhotonNetwork.GameVersion ="1.0";
// AppId를 입력한 Photon Server Setting 정보 기반으로 서버에 연결
PhotonNetwork.ConnectUsingSettings();
// 네트워크에 연결된 사용자 아이디
PhotonNetwork.NickNam();
// 서버에 성공적으로 연결되었을 때 콜백되는 함수
public override void OnConnectedToMaster(){}
// 방에 성공적으로 연결되었을 때 콜백되는 함수
public override void OnPlayerEnteredRoom(Player newPlayer)
// 방에서 나가고 난 후 콜백되는 함수
public override void OnLeftRoom()
// 로비에 성공적으로 연결되었을 때 콜백되는 함수
public override void OnJoinedLobby()
// 방 정보가 변경되었을 때 콜백되는 함수
public override void OnRoomListUpdate(List<RoomInfo> roomList)
// 방장을 바꿔주는 함수
public override void OnMasterClientSwitched(Player newMasterClient){}
동기화
동기화란?
Onwer가 자신의 변화값을 다른 local에 있는 자신 복제본에게 전달해주는 것
PhotonView
동기화 해야 하는 오브젝트에 PhotonView컴포넌트를 붙여주면 쉽게 동기화를 할 수 있다
1.Rpc
특정 이벤트가 발생했을 때 즉각적으로 다른 클라이언트에게 알려야 할 때 사용한다. 예를 들어, 플레이어가 특정 버튼을 누르거나, 아이템을 사용하는 등의 일회성, 비동기적인 행동을 다른 클라이언트와 동기화하고 싶을 때 유용하다.
PhotonView photonView
// 로컬 클라이언트를 제외한 모든 원격 클라이언트에게 RPC를 호출
photonView.RPC("TestFuntion",RpcTarget.Others,인자값);
// 모든 클라이언트(로컬 및 원격)에게 호출
photonView.RPC("TestFuntion",RpcTarget.All,인자값);
[PunRPC] void TestFuntion(){};
2.IPunObservable
게임 오브젝트의 상태(위치, 회전, 점수 등)가 지속적으로 변할 때 사용한다. 이 인터페이스를 구현하면OnPhotonSerializeView 메서드를 통해 객체의 상태를 주기적으로 자동으로 동기화할 수 있다.
public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{
if(stream.IsWriting == true)
{
stream.SendNext(isFiring); // 내 정보 보내기
}
else
{
isFiring = (bool)stream.ReceiveNext(); // 상대방의 정보 받아오기
}
}
'Unity > 네트워크' 카테고리의 다른 글
유니티와 Phton Pun 네트워크 연동- Part1 (세팅) (0) | 2025.03.13 |
---|