목록게임/PUN2(Unity) (8)
센로그

◆ IPunObservable 이란?관찰할 데이터들을 주고받으며 동기화 해주도록 구현할 수 있는 인터페이스이 인터페이스를 상속받은 스크립트는 인터페이스 메서드인 OnSerializeView()를 꼭 구현해줘야 하며, PhotonView의 Observed Components란에 추가하여 관찰할 수 있다.위 그림에서 PhotonView는 IPunObservable을 상속한 PlayerMove클래스의 OnSerializeView()를 호출하여 동기화한다. 이때, 초당 PhotonNetwork.SerializationRate로 설정된 만큼의 비율로 호출한다. (get 및 set 가능) stream을 주고 받는 만큼, 안에 int, string 등을 포함하여 전달할 수 있다. 따라서 간단한 변수 동기화에 많이 쓴..
◆ Room 생성 및 참가PhotonNetwork.CreateRoom(string roomName, RoomOptions roomOptions): roomOptions을 반영한 룸 생성PhotonNetwork.JoinRoom(string roomName): roomName 이름의 룸에 접속PhotonNetwork.JoinRandomRoom(): 생성되어있는 룸들 중에서 랜덤한 룸에 접속PhotonNetwork.JoinOrCreateRoom(string roomName, RoomOptions roomOptions, TypedLobby typedLobby, string expectedUsers): 룸에 참가하되, 해당 룸이 없으면 새로 생성해서 참가PhotonNetwork.JoinRandomOrC..
◆ Player Class using Photon.Realtime 필요 포톤에서 플레이어에 관련된 정보를 추적할 때 사용됨 [예시] using Photon.Realtime; public void Initialize(Player player) { usernameText.text = player.NickName; } Player의 속성을 통해, 해당 플레이어의 NickName, ActorNumber, UserId, IsMasterClient 등을 확인 가능 ◆ PhotonNetwork.PlayerList 말 그대로 포톤 네트워크 서버에 접속해있는 플레이어 리스트 반환 [예시] using Photon.Realtime; using Photon.Pun; private void Start() { foreach(Pl..
◆ [PunRPC]원격으로 호출할 수 있는 함수라는 의미.내 RPC 함수를 실행할 때, 같은 포톤 뷰를 가진 원격 객체의 RPC 함수 또한 실행시켜준다. (상태가 일치하도록)[PunRPC]void RPC_TakeDamage(float damage){ currentHealth -= damage;}함수 구현시 함수명 위에 [PunRPC] 를 붙여주면 RPC 함수가 된다. ◆ PhotonView.RPC(string, PhotonTargets, params object[])다른 클라이언트의 객체에 있는 함수를 실행함실행할 함수명, 실행할 대상, 함수 파라미터[]를 넣어 호출한다. 조건 1) 다른 클라이언트의 객체도 PhotonView 컴포넌트를 가지고 있어야 함조건 2) 호출될..
◆ Custom Property (커스텀 프로퍼티) 포톤에서는 Player나 Room에 대한 CustomProperty를 설정할 수 있다. CustomProperty는 Hashtable을 사용하여 네트워크상에서 정보를 관리하며, 많이 바뀌지 않는 설정사항을 동기화할 때 주로 사용한다. ※ Hashtable 이란? {Key : Value}로 구성된 자료구조로, Key를 통해서 Value를 꺼내올 수 있다. Key는 string 타입이어야 하고, Value는 byte, boolean, short, int, long, float, double, string, 배열, hashtable, dictionary, Vector2, Vector3, Quaternion, PhotonPlayer 타입이 될 수 있다. ◆ P..

◆ 클라이언트 간 Unity 컴포넌트 동기화 방법 포톤은 클라이언트 간 동기화를 위해 몇가지 방법을 제공한다. Photon View를 이용하는 방법 RPC를 이용하는 방법 CustomProperties를 이용하는 방법 그중 Photon View를 이용하면, 다음과 같이 Transform, Rigidbody, Animator 컴포넌트를 쉽게 동기화할 수 있다. 이들을 동기화 하기위해 항상 PhotonView가 필요하다. PhotonView에서 어떤 컴포넌트를 관찰해서 동기화할지 총괄하기 때문. PhotonView의 ObservedComponents가 위와 같은 경우, Player 오브젝트의 Transform과 Animator을 관찰하고 있다는 뜻이다. (해당 스크립트를 추가하면, Photon View의 O..