[2026.04.20] NetworkVariable/NetworkList/RPC/Relay

SmartBear·2026년 4월 20일

NetworkVariable

Sync State & Permission

  • 일반 값을 상태로 정의
  • 상태의 변화에 따라 동일 네트워크상 서버/클라이언트에게 같은 을 공유하는 형태.
  • 상태에 대한 접근 권한에 대한 설정 가능
    • NetworkVariableReadPermission; 해당 값을 읽는 권한.
    • NetworkVariableWritePermission; 해당 값을 쓰는 권한.
    • 크게 Everyone, Owner, Server 으로 분류됨.
  • OnValueChanged Callback; 해당 NetworkVariable 의 값변화에 따라 Action처럼 OnValueChanged를 통한 변화를 감지를 기본 제공. UI 등에 잇기 편함.

사용 가능한 타입

사용 가능사용 불가
int,float,bool,ulong 등 기본 타입string
Vector2, Vector3, Quaternion,List<T>, Dictionary<K,v>
enum, structclass
FixedString32Bytes ~ FixedString4096Bytes
  • string 이 안되는 이유; ListDictionanry도 마찬가지지만 가변적인 데이터는 사용할 수가 없다.

NetworkList

  • 단순히 List 의 Network 버전.
  • 단, List 값의 변경 및 추가 삭제등은 Server 에서만 가능. 따라서 ServerRpc 와 함께 사용해야함.

RPC (Remote Procedure Call)

결론적으로는 Local 에서는 호출 행위만을 하며 실제 호출되는 Function Body 는 Remote 에 있는 형태

규칙설명
ServerRpc 접미사메서드 이름이 반드시 ServerRpc로 끝나야 합니다.
ClientRpc 접미사메서드 이름이 반드시 ClientRpc로 끝나야 합니다.
[ServerRpc]/[ClientRpc] 어트리뷰트메서드 바로 전(위?) 사용합니다.
NetworkBehaviour 상속 필수RPC 는 NetworkBehaviour를 상속한 Class 에서만 사용 가능합니다.

ServerRPC

  • Client 에서 처리하지 않고 서버에서 처리해야 하는 이벤트를 요청함.

ClientRPC

  • 서버에서 클라이언트로 처리를 요청함. (Broadcast 성격을 갖고 있음)

중요!

  • RPC 는 Return 을 할 수 없다. 따라서 값을 받아오기 위해서는 NetworkVariable 로 공유하거나 역방향 RPC 를 통해 값을 취득해야 한다.

Relay

  • 주로 NAT 환경에서 서로 통신할 수 있게 하기 위한 서비스.
  • 단일 Session 에 대한 관리; Project 별 관리(추측)
  • 필수로 Unity Cloud 에 연결 필요
  • 필수로 Auth 서비스를 이용하여 로그인을 해야함.
  • JoinID String 값을 이용하여 Client 가 Host 에 붙을 수 있음.
profile
Python Dev with Infra -> Game Programmer

0개의 댓글