센로그
[PUN2] PunRPC / PV.RPC 본문
◆ [PunRPC]
원격으로 호출할 수 있는 함수라는 의미.
내 RPC 함수를 실행할 때, 같은 포톤 뷰를 가진 원격 객체의 RPC 함수 또한 실행시켜준다. (상태가 일치하도록)
[PunRPC]
void RPC_TakeDamage(float damage)
{
currentHealth -= damage;
}
함수 구현시 함수명 위에 [PunRPC] 를 붙여주면 RPC 함수가 된다.
◆ PhotonView.RPC(string, PhotonTargets, params object[])
다른 클라이언트의 객체에 있는 함수를 실행함
실행할 함수명, 실행할 대상, 함수 파라미터[]를 넣어 호출한다.
조건 1) 다른 클라이언트의 객체도 PhotonView 컴포넌트를 가지고 있어야 함
조건 2) 호출될 함수에는 [PunRPC] 가 붙어있어야 함
[예시]
//데미지 동기화
//공격자의 PC에서 TakeDamage 함수 호출
public void TakeDamage(float damage)
{
//RpcTarget.All에게 자신의 RPC_TakeDamage함수 호출
PV.RPC("RPC_TakeDamage", RpcTarget.All, damage);
}
[PunRPC] //같은 포톤뷰 끼리 동기화
void RPC_TakeDamage(float damage)
{
// 피해자 컴퓨터에서만 실행되도록 함. 실행 후 다른 컴퓨터들의 같은 포톤뷰 동기화
if (!PV.IsMine)
return;
Debug.Log("took damage: " + damage);
currentHealth -= damage;
if(currentHealth <= 0)
{
Die();
}
}
void Die()
{
playerManager.Die();
}
※ 만약 RPC 함수의 내용이 재접속시에도 유지되어야 하는 정보라면, 호출시 RpcTarget.AllBuffered를 써야 한다. (.All 쓰면 재접시 사라짐)
'게임 > PUN2(Unity)' 카테고리의 다른 글
[PUN2] Room 생성 및 참가 / RoomOptions / Room 관련 정보 확인 (0) | 2023.07.24 |
---|---|
[PUN2] Player 클래스 (0) | 2023.02.15 |
[PUN2] Custom Property (커스텀 프로퍼티) (0) | 2023.01.20 |
[PUN2] PhotonView - Transform, Animator, Rigidbody (0) | 2023.01.20 |
[PUN2] PUN2 개요 / MonoBehaviourPunCallbacks 콜백 (0) | 2023.01.12 |
Comments