NetworkBehaviour는 MonoBehaviour를 상속한 멀티플레이어용 확장 클래스입니다. 따라서 Update, Start, 코루틴 같은 기존 기능을 그대로 사용하면서 네트워크 동기화 기능을 추가로 사용할 수 있습니다.
| 구분 | MonoBehaviour | NetworkBehaviour |
|---|---|---|
| 주 용도 | 일반적인 로컬 게임 로직 | 네트워크로 동기화되는 게임 로직 |
| 상속 관계 | Unity 컴포넌트의 기본 클래스 | MonoBehaviour를 상속 |
| 필요 패키지 | Unity 기본 제공 | Netcode for GameObjects 필요 |
NetworkObject | 필요 없음 | 네트워크 기능 사용 시 필요 |
| 생명주기 | Awake, Start, Update, OnDestroy 등 | 기존 생명주기 + OnNetworkSpawn, OnNetworkDespawn |
| 변수 동기화 | 직접 구현해야 함 | NetworkVariable<T> 사용 가능 |
| 원격 함수 호출 | 기본 제공하지 않음 | [Rpc]를 통해 서버·클라이언트 간 호출 가능 |
| 서버/클라이언트 구분 | 직접 관리해야 함 | IsServer, IsClient, IsHost 제공 |
| 소유권 확인 | 개념 없음 | IsOwner, OwnerClientId 제공 |
| 오브젝트 생성 | Instantiate() | 서버에서 NetworkObject.Spawn() 필요 |
| 실행 범위 | 현재 실행 중인 게임 인스턴스 | 서버와 연결된 클라이언트에서 각각 실행 |
| 적합한 예 | UI, 카메라, 이펙트, 로컬 입력 | 플레이어, 적, 체력, 네트워크 상호작용 |
간단한 비교 예시는 다음과 같습니다.
// 일반 로컬 컴포넌트
public class LocalPlayer : MonoBehaviour
{
private void Start()
{
Debug.Log("로컬 오브젝트 시작");
}
}
using Unity.Netcode;
public class NetworkPlayer : NetworkBehaviour
{
public NetworkVariable<int> Health = new(100);
public override void OnNetworkSpawn()
{
if (IsServer)
Debug.Log("서버에서 네트워크 플레이어 생성");
if (IsOwner)
Debug.Log("이 클라이언트가 소유한 플레이어");
}
}
핵심 선택 기준은 간단합니다.
MonoBehaviourNetworkBehaviourStart()보다 OnNetworkSpawn()을 사용하는 편이 안전합니다.
새 글이 올라오면 Develog 알림으로 알려드려요
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요.
Develog는 단순히 글을 쓰는 공간이 아닙니다. 성장의 과정을 기록하고, 그 기록으로 나를 증명하며 원하는 기회를 얻는 곳이길 바랐습니다. 누군가의 꿈으로 향하는 중간다리가 되는 것, 그것이 Develog를 만든 이유입니다.

게임업계 취업을 준비하다 보면 조금 불편한 현실을 마주하게 됩니다. 게임회사에 들어가고 싶은 사람은 많습니다. 특히 신입 채용은 더 그렇습니다. 공고 하나에 많은 지원자가 몰리고, 회사 입장에서는 비슷한 조건의 지원자 가운데 사람을 선택할 수 있습니다. 그래서 다른 산업에서 흔히 이야기하는 “처음부터 연봉을 낮춰 부르지 마세요.” “적극적으로 협상하세요.”

우리들의 게임 발매 이야기
Develog는 단순히 글을 쓰는 공간이 아닙니다. 성장의 과정을 기록하고, 그 기록으로 나를 증명하며 원하는 기회를 얻는 곳이길 바랐습니다. 누군가의 꿈으로 향하는 중간다리가 되는 것, 그것이 Develog를 만든 이유입니다.


게임업계 취업을 준비하다 보면 조금 불편한 현실을 마주하게 됩니다. 게임회사에 들어가고 싶은 사람은 많습니다. 특히 신입 채용은 더 그렇습니다. 공고 하나에 많은 지원자가 몰리고, 회사 입장에서는 비슷한 조건의 지원자 가운데 사람을 선택할 수 있습니다. 그래서 다른 산업에서 흔히 이야기하는 “처음부터 연봉을 낮춰 부르지 마세요.” “적극적으로 협상하세요.”
