Unity 네트워킹 매뉴얼 해설

이 문서는 Unity의 네트워킹 시스템을 사용하여 멀티플레이어 게임을 구축하기 위한 API를 설명합니다. 특히 NetworkBehaviour 클래스와 관련된 다양한 기능과 메서드에 대해 다룹니다. 이와 함께 사용 예도 포함되어 있습니다.

중요한 사항

  • UNet은 더 이상 지원되지 않으므로, 새로운 멀티플레이어 솔루션인 게임 오브젝트용 넷코드를 사용하는 것이 좋습니다.
  • NetworkBehaviour 스크립트는 반드시 Network Identity 컴포넌트가 있는 게임 오브젝트와 연결되어야 합니다.

기본 개념

NetworkBehaviour

NetworkBehaviour는 네트워크 기능을 가진 게임 오브젝트에 스크립트를 추가할 때 사용하는 기본 클래스입니다. 이 클래스를 상속받은 스크립트를 작성해야 합니다.

프로퍼티 설명

프로퍼티 설명
isLocalPlayer 게임 오브젝트가 로컬 클라이언트를 나타낼 경우 true를 반환합니다.
isServer 게임 오브젝트가 서버에서 실행 중일 경우 true를 반환합니다.
isClient 게임 오브젝트가 클라이언트에서 실행 중일 경우 true를 반환합니다.
hasAuthority 게임 오브젝트가 권한을 가진 경우 true를 반환합니다.
netId 게임 오브젝트의 고유 네트워크 ID입니다.
playerControllerId NetworkBehaviour 스크립트와 연결된 플레이어의 ID입니다.
connectionToServer 게임 오브젝트와 연결된 NetworkConnection입니다.
connectionToClient 클라이언트의 플레이어 게임 오브젝트와 연결된 NetworkConnection입니다.
localPlayerAuthority 이 값은 Network Identity 컴포넌트에서 설정됩니다.

주요 기능

동기화된 변수

SyncVar 속성을 사용하여 멤버 변수를 서버와 클라이언트 간에 동기화할 수 있습니다.

public class SpaceShip : NetworkBehaviour
{
    [SyncVar]
    public int health;

    [SyncVar]
    public string playerName;
}

서버에서 SyncVar 값이 변경될 경우, 자동으로 클라이언트에 새 값을 전송합니다.

네트워크 콜백

네트워크 이벤트에 대해 기본적으로 제공되는 콜백 함수가 있습니다.

  • OnStartServer: 게임 오브젝트가 서버에서 스폰될 때 호출됩니다.
  • OnStartClient: 클라이언트에서 게임 오브젝트가 스폰될 때 호출됩니다.
  • OnNetworkDestroy: 서버에서 게임 오브젝트를 삭제할 때 클라이언트에서 호출됩니다.

예제:

public class SpaceShip : NetworkBehaviour
{
    public override void OnStartServer()
    {
        // 클라이언트 관련 기능 비활성화
    }

    public override void OnStartClient()
    {
        // 클라이언트 이벤트 등록
    }
}

Server 및 Client 함수

함수를 Server 또는 Client 속성으로 태그하여 특정 기능을 달성할 수 있습니다.

[Server]
public void TakeDamage(int amount)
{
    // 서버 전용 코드
}

클라이언트에서 커맨드를 전송하려면 다음과 같은 형식의 함수를 사용해야 합니다:

[Command]
public void CmdThrust(float thrusting, int spin)
{
    // 서버에서 실행
}

클라이언트 RPC 호출

서버에서 클라이언트 측 작업을 수행하기 위해 RPC 호출을 사용할 수 있습니다.

[ClientRpc]
public void RpcDoOnClient(int foo)
{
    // 모든 클라이언트에서 실행
}

이벤트 기반 시스템

네트워크 이벤트를 사용하여 유연한 시스템을 구축할 수 있습니다.

[SyncEvent]
public event TakeDamageDelegate EventTakeDamage;

요약

Unity의 네트워킹 기능을 사용하여 멀티플레이어 게임을 구축하는 과정에서 NetworkBehaviour, SyncVar, RPC 호출 등을 활용하여 서버와 클라이언트 간의 원활한 연결과 이벤트 관리를 수행할 수 있습니다. 이 문서를 바탕으로 자신만의 멀티플레이어 기능을 개발해 보세요.

Read more

Unity 매뉴얼 스크립팅 API 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 간단한 해설과 활용 예제들을 포함하고 있습니다. Unity는 게임 개발 플랫폼으로, 스크립팅 API를 통해 게임의 다양한 기능을 제어하고 수정할 수 있습니다. 버전 Unity 스크립팅 API는 여러 버전으로 제공됩니다. 주의 깊게 선택하여 사용하는 것이 중요합니다. 버전 설명 2023.2 최신 기능 및 버그 수정이 추가됨

By 이재협/실장/시스템개발실/PHYSIA

Unity 매뉴얼 스크립팅 API 설명서 해설

이 문서는 Unity의 매뉴얼 스크립팅 API에 대한 정보를 제공하며, 버전에 따라 다르게 적용되는 내용들을 설명합니다. 본 문서에서는 주요 내용을 간단히 정리하고 활용 가능 예제를 통해 이해를 돕겠습니다. 기본 개념 Unity에서 스크립팅 API는 게임 오브젝트와 그들의 동작을 제어하기 위한 강력한 도구입니다. 이를 통해 게임의 로직, 물리 엔진, 애니메이션 및 사용자 인터페이스를

By 이재협/실장/시스템개발실/PHYSIA

Unity 스크립팅 API 가이드

이 문서는 Unity의 스크립팅 API에 대해 설명합니다. Unity는 게임 개발을 위한 인기 있는 엔진으로, 강력한 스크립팅 기능을 제공합니다. 이 가이드는 Unity에서 스크립트를 작성하고 사용하는 방법을 이해하는 데 도움을 드립니다. 목차 * Unity 스크립팅 소개 * 기본 스크립트 생성 * 스크립트 사용 예제 * 응용 프로그램 * 참고 자료 Unity 스크립팅 소개 Unity는 C# 프로그래밍 언어를

By 이재협/실장/시스템개발실/PHYSIA