Photon Unity Networking 동기화

램해·2025년 7월 14일
0

이전시간에는 포톤을 사용해서 멀티 플레이를 위한 준비에 대하여 알아봤다. 그러면 이제 준비는 끝났으니 사용하기 위한 방법을 알아보자.

PhotonView

Photon 네트워크 상에서 이 오브젝트가 누구의 것인지를 판단하고, 동기화할 컴포넌트를 지정할 수 있도록 해주는 컴포넌트입니다. 쉽게 말해, "이 오브젝트는 네트워크에서 관리되며, 누가 조종하고, 어떤 데이터를 동기화할지 알려주는 식별자 역할"입니다.

PhotonView의 주요 속성

ViewID : Photon 내부에서 이 오브젝트를 유일하게 식별하는 ID입니다.
IsMine : 이 오브젝트가 로컬 플레이어의 것인지를 나타냅니다.
Owner / OwnerActorNr : 현재 이 오브젝트의 소유자입니다 (Photon의 Player).
Observed Components : 동기화할 컴포넌트를 지정합니다. 예: Transform, Animator 등
Synchronization 동기화 방식 : Reliable, Unreliable 등

[RequireComponent(typeof(PhotonView))]
public class SimpleMovement : MonoBehaviour
{
    public float moveSpeed = 5f;

    private PhotonView _view;

    private void Awake()
    {
        _view = GetComponent<PhotonView>();
    }

    private void Update()
    {
        if (_view.IsMine)  
        {
            float h = Input.GetAxis("Horizontal");
            float v = Input.GetAxis("Vertical");
            transform.Translate(new Vector3(h, v, 0) * moveSpeed * Time.deltaTime);
        }
    }
}

변수 동기화

네트워크를 통해 다른 플레이어에게 내 변수 값을 보내고, 상대방의 변수 값을 받는 것입니다.

자동 동기화 (Observed Components) : Photon이 제공하는 컴포넌트에서 위치, 회전 등 자동 처리
수동 동기화 (OnPhotonSerializeView) : 내가 직접 값을 보내고 받는 방식. 체력, 점수, 커스텀 데이터 등

0개의 댓글