302호 컴퓨터실/강의 자료

[유니티] MacOS(M1), 유니티에 Protobuf 적용하기

삼층거주자 2024. 6. 20. 20:29
728x90
반응형


Node.js + Unity
 강의 제작 중 프로토콜 버퍼 적용하는 과정이 꽤나 까다로웠기때문에 공유.

 

이 가이드를 따라오기 위한 전제조건

  1. MacOS
  2. 유니티 설치가 완료된 상태 (.Net Framwork or .Netstandard 2.x or 4 or 6 or 8...)

윈도우는 오히려 설치가 더 쉽기때문에 그냥 패키지매니저를 통해서 다운로드 받아 사용하면 된다.

 

처음에는 다른 플러그인들을 사용해보다가 결국에는 protobuf-net을 사용하기로 했다.

사용한 플러그인은 protobuf-net

아래와 같이 주고받을 패킷 구조 정의가 가능하다. 

서버에서도 물론 protobufjs 를 사용해서 같은 형태로 보내주고 있다. 

[ProtoContract]
public class CommonPacket
{
    [ProtoMember(1)]
    public uint handlerId { get; set; }

    [ProtoMember(2)]
    public uint playerId { get; set; }

    [ProtoMember(3)]
    public string version { get; set; }

    [ProtoMember(4)]
    public byte[] payload { get; set; }
}

 

 

 

무언가를 다운로드하기 전에 확인해야 할 사항 

유니티 상단 메뉴에서 

Edit   >>   Project Settings...   >>   Player  >>   Other Settings

많이 나오는 세팅 값들 중에 아래와 같은 값을 찾아야한다.

 

 

지금 내 유니티는 .NET Standard 2.1 로 돌아가고 있구나를 파악한다.

 

자 그리고

 

https://www.nuget.org/packages/protobuf-net

 

protobuf-net 3.2.30

Provides simple access to fast and efficient "Protocol Buffers" serialization from .NET applications

www.nuget.org

 

nuget 패키지 매니저에서 플러그인을 직접 다운로드 받아서 사용하면 되는데 체크해야할 것은 2곳

오른쪽 빨간박스에서 직접 다운로드 받으면 되고

그 다음에는 왼쪽에 있는 의존성 패키지로 들어가 또 다운로드 받으면 된다. 

만약 또 의존성이 있다면 모조리 다운로드해야한다. (어차피 하나라도 없으면 실행안됨)

 

.NetStandard 2.1 에서 필요한건 아래 2개까지 해서 총 3개

https://www.nuget.org/packages/protobuf-net.Core/

 

protobuf-net.Core 3.2.30

Provides simple access to fast and efficient "Protocol Buffers" serialization from .NET applications

www.nuget.org

https://www.nuget.org/packages/System.Collections.Immutable/

 

System.Collections.Immutable 8.0.0

This package provides collections that are thread safe and guaranteed to never change their contents, also known as immutable collections. Like strings, any methods that perform modifications will not change the existing instance but instead return a new i

www.nuget.org

 

그런데 다운로드 받으면 '.nuget' 이라는 확장자로 지정되어있는데 신경쓰지말고 '.zip'으로 변경해서 압축해제해주자

 

그리고 폴더 안을 보면 아래와 같이 구성되어 있을텐데

lib    >>>   [본인의 dotnet 설정에 따라 선택 (지금은 .NetStandard 2.1)]   >>>   [플러그인 이름 ].dll

dll 확장자 파일을 찾아서 유니티에 붙여넣어주면 된다.

붙여넣는 경로는

Assets   >>>    Plugins 폴더 안으로!

 

셋팅을 다 했다면 이제 마지막으로 명령어를 날려주자 

프로젝트 폴더에서 터미널을 활성화 시키고

dotnet add package protobuf-net --version 3.2.30
dotnet add package protobuf-net.Core --version 3.2.30
dotnet add package System.Collections.Immutable --version 8.0.0

 

위 과정이 정상적으로 마무리되었다면 프로토버프 사용은 using Protobuf; 로 네임스페이스 선언해주고 쓰면된다.

TCP 패킷통신에서 프로토콜 버퍼 굉장히 많이 쓰는데 Mac 에서 개발하는 사람이 적다보니까 자료가 적어 내가 남겨둔다.

 

반응형