Mirror Networking에서는 Attribute를 이용해 간편하게 Network Message를 주고 받을 수 있습니다.
만약 Network Message에 대해 알고 싶으시면 아래 글을 읽어 주세요.
https://orakjaengi.tistory.com/entry/Mirror-Networking-Network-Message%EB%9E%80
[Mirror Networking] Network Message란?
목차 1. Network Message란? 2. Network Message 사용법 2-1. NetworkMessage를 상속하는 구조체 혹은 클래스를 생성 2-2. 서버나 클라이언트에서 메시지를 등록 2-3. 메시지에 데이터를 담고 메시지를 발송 2
orakjaengi.tistory.com
목차
1. Command
2. ClientRpc
3. TargetRpc
4. 정리
Command
설명
- 클라이언트에서 서버로 메시지를 보낼 때 사용합니다.
- 클라이언트가 서버에서 처리해야 할 작업을 요청하거나 데이터를 전달할 때 사용됩니다.
- 해당 메서드는 서버에서만 실행되며, 클라이언트가 호출할 수 있습니다.
- 해당 메서드를 호출할 객체가 현재 클라이언트가 직접 소유하고 제어하는 권한(authority)을 가진 객체(예: 로컬플레이어)여야 호출할 수 있습니다.
- 만약 권한이 클라이언트에서 권한을 가지고 있지 않은 객체에서 Command를 호출하고 싶으시면
를 사용하시면 됩니다.[Command(requiresAuthority = false)]
사용 상황
- 클라이언트에서 서버로 게임 데이터를 전송할 때 사용합니다.
- 서버에서 특정 로직(예: 게임 상태 업데이트)을 처리해야 할 때 사용합니다.
[Command]
public void CmdMethod(string newStr)
{
// 매개변수로 데이터를 전달
// 서버에서 수행할 로직
}
ClientRpc
설명
- 서버에서 모든 클라이언트로 메시지를 전송할 때 사용됩니다.
- 클라이언트에서 실행해야 하는 메서드를 서버에서 호출합니다.
- 모든 클라이언트가 해당 메시지를 받습니다.
사용 상황
- 서버에서 모든 클라이언트의 UI를 동기화할 때 사용합니다.
- 모든 클라이언트가 알아야 할 이벤트(예: 게임 종료)를 알릴 때 사용합니다.
[ClientRpc]
public void RpcMethod(int newInt)
{
// 매개변수로 데이터를 전달
// 클라이언트에서 실행할 로직
}
TargetRpc
설명
- 서버에서 특정 클라이언트로만 메시지를 전송할 때 사용됩니다.
- [ClientRpc]와 비슷하지만, 특정 클라이언트만 메시지를 수신합니다.
- 서버에서 대상을 지정해 호출해야 합니다.
사용 상황
- 특정 클라이언트에게만 UI 업데이트를 요청할 때 사용합니다.
- 특정 클라이언트만 알아야 하는 정보를 전달할 때 사용합니다.
[TargetRpc]
public void TargetMethod(NetworkConnection target, string message)
{
// 매개변수로 메시지를 보낼 클라이언트와 전달할 데이터를 표시
// 특정 클라이언트에서 실행할 로직
}
정리
| Attribute | 동작 방향 | 대상 | 주요 사용 목적 |
| Command | 클라이언트 >> 서버 | 서버 | 게임 상태 업데이트 |
| ClientRpc | 서버 >> 모든 클라이언트 | 모든 클라이언트 | UI 동기화 |
| TargetRpc | 서버 >> 특정 클라이언트 | 특정 클라이언트 | 개인 메시지 |
'Mirror Networking' 카테고리의 다른 글
| [Mirror Networking] SyncVar (0) | 2025.01.10 |
|---|---|
| [Mirror Networking] Network Message란? (0) | 2025.01.10 |
| [Mirror Networking] 네트워크 객체의 서버 및 클라이언트 상태 관리 (0) | 2025.01.09 |
| [Mirror Networking] Network Manager란? (0) | 2025.01.08 |
| [Mirror Networking] 유니티 Mirror Networking 사전 지식 (0) | 2025.01.08 |