유니티 NetCode : NetworkBehaviour와 MonoBehaviour
댓글 0
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요!
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요!
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()을 사용하는 편이 안전합니다.
XR을 활용한 게임 개발 3기(유니티) 수강생입니다. 곧 수료 하지만 앞으로 이곳에 가끔 저의 개발 경험이 나 지식 기록할까 합니다. 더 나아가 이 사이트가 제 개인위키의 역할을 할 수 있으면 좋겠습니다. 한국 게임 시장을 흔들겠습니다

게임 광고 수익은 단순히 광고를 붙이는 것이 아니라, 여러 광고 네트워크를 경쟁시켜 가장 높은 수익을 만드는 구조입니다.

안녕하세요. 플밍 4기 입니다. 게임 개발을 배우기 전 네트워크 엔지니어 도메인에서 익히고 배웠던 네트워크 이론에 대한 기초 입니다. 학습에 도움이 되길 바라며 공유 드립니다.
XR을 활용한 게임 개발 3기(유니티) 수강생입니다. 곧 수료 하지만 앞으로 이곳에 가끔 저의 개발 경험이 나 지식 기록할까 합니다. 더 나아가 이 사이트가 제 개인위키의 역할을 할 수 있으면 좋겠습니다. 한국 게임 시장을 흔들겠습니다



게임 광고 수익은 단순히 광고를 붙이는 것이 아니라, 여러 광고 네트워크를 경쟁시켜 가장 높은 수익을 만드는 구조입니다.


안녕하세요. 플밍 4기 입니다. 게임 개발을 배우기 전 네트워크 엔지니어 도메인에서 익히고 배웠던 네트워크 이론에 대한 기초 입니다. 학습에 도움이 되길 바라며 공유 드립니다.