Unity .NET dll 적용 시행착오

FGPRJS·2022년 5월 5일
0

편의성을 위해 Unity와 Server의 프로토콜을 동시에 사용하고 싶어서 .net의 dll 라이브러리를 사용해서 Unity Client와 Server 모두에 적용 시켰었다.

DLL 버전은 다음과 같다.

  • .NET Core 3.1

DLL에서는 JSON 활용을 위하여 Newtonsoft.Json 을 사용했었다. Nuget 패키지를 통하여 설치하였으며, 사용한 Newtonsoft.Json의 정보는 다음과 같다.

  • V13.0.1
  • .NET Core 3.1

Build가 되지 않음 - Nuget 관련

구동까지는 성공했지만, Webgl Build가 되지 않았다.
<Raw Type> 등의 분석할 수 없는 오류를 발생시키며 빌드를 실패했었다.

PC용(Windows, Linux) 빌드에서 오류를 알려주었는데, DLL에서 사용하는 Nuget Package를 Unity에서 즉시 사용할 수 없다는 것이었다. (기본적으로 Nuget은 ZIP규격으로 되어 있기 때문에 DLL을 읽는 Unity는 패키지를 읽을 수 없다.)

궁극적으로, Unity에서 Nuget을 쓸 수 있게 해 주는 패키지를 설치하여 Nuget을 쓸 수 있게는 되었다.

Microsoft 에서 제공하는 문서에서 제공하는 방법을 사용해 DLL을 가지고 올 수도 있다.

Build가 되지 않음 - .NET Core

Nuget을 사용할 수 있게 해주는 패키지를 설치하여 Build에 성공하였으나, 이번엔 Client 내부에서 접속이 되지 않는다.
이유를 찾던 중 다음 문서를 확인하였다.

주요 내용을 요약하면 다음과 같다.

  • .NET Core를 사용할 수 없다는 이야기이다.

.NET Framework는 기본적으로 Linux용을 위한것이 아니기 때문에, Linux 서버용으로는 부적합하다.

  • 다음 사이트에서 제공하는 .NET(구 : .Net Core)과 .NET Framework의 차이점

라이브러리를 .NET Framework로 만들면 되지 않겠나 싶지만, .NET Core와 .NET Framework는 다른 환경에서 동작하기 때문에 기본적으로 안된다. 관련된 질의응답


결론

다른 방법을 사용하면 할 수 있을 수도 있으나, 애초부터 편의성을 위한 것이었기 때문에 dll을 공유하는 작업은 폐기해야 했다.
지금이야 .NET이라는 공통점을 갖고 있어 보였기에 라이브러리를 공유하려고 했지만, Server가 Node.js라면? Java Spring Framework를 사용해서 REST API 통신을 한다면?

굳이 라이브러리를 공유할 필요는 없다고 판단했다.

profile
FGPRJS

0개의 댓글