유니티에 dll 을 추가하는 방법
- A 프로젝트를 dll 로 만든다
- unityengine.dll 을 사용하고자 하는 곳(A)에 reference 로 추가한다
- 빌드를 통해 나온 A.dll 을 사용하고자 하는 프로젝트(유니티에 드래그엔 드랍으로 끌어다 놓으면 해당 dll 내용을 사용 할 수 있다
Dynamically Linked Library
우리말로 바꾸면 동적으로 링크된 라이브러리 정도가 되는 DLL은 어떤 기능을 하는 클래스 등을
다른 프로그램에서도 사용할 수 있게 재활용 목적을 가지기도 하고,
적은 리소스를 사용하기 위함, 손쉬운 배포와 설치, 관리의 이점, 모듈식 아키텍처 등을 위해 사용한다.
Dll은 정적 링크인 라이브러리(.lib) 파일과는 달리 필요할 때 불러오기 때문에
메모리 관리라는 관점에서 봐서 이점이 있다.
이론은 이 정도면 충분하고 바로 DLL을 만들어보자

먼저 비주얼 스튜디오를 실행하고, 새 프로젝트 만들기를 통해
C# 클래스 라이브러리 .NET(닷넷에서 돌리기 때문)을 만들자.
이름은 DLL의 이름이니 원하는 이름을 적어 넣도록 하자.

유니티에서 사용할 DLL이기 때문에 유니티의 기능을 쓰려고 하는데 오류가 난다.
유니티를 이용하는 사람이라면 바로 어떤 문제인지 바로 알아차렸을 것이다
바로 using에서 UnityEngine을 추가시켜주기 않았기 때문이다.

??? 추가를 해줬는데도 오류가 생겼다.
보통 유니티로 코딩을 배운 사람들은 여기서 더 이상 해결하지 못하고 전전긍긍하고 있을 것이다.
저기서 오류가 나는 이유는 간단한 이유에서인데 바로 UnityEngine이라는 Dll을 추가시켜주지 않아서이다.

솔루션 탐색기에서 참조 추가를 누르면

이런 창이 뜬다.
위 사진에서는 바로 유니티엔진dll이 보이지만 내가 최근에 사용해서 보이는 것이고 처음 빌드 한다면
바로 보이지 않을 것이다.
그러므로 아래의 찾아보기 버튼을 눌러서 직접 추가해주자.

윈도우의 경우 허브를 설치했다면 위와 같은 경로에서 찾을 수 있을 것이다.
(맥의 경우 이 글의 제일 처음 부분의 유니티 공식 가이드 링크에서 확인하면 된다.)
그리고 추가를 눌러주자.

그러면 이렇게 우리가 추가하려는 Dll이 나올 것이다.
체크를 하고 확인을 눌러 추가해주자.

추가된 유니티 엔진 dll을 확인할 수 있고,
오류가 사라진 것도 볼 수 있을 것이다.
근데 여기서 스크립트를 하나 더 추가하고 싶다면

솔루션 바로 아래의 우리가 만들고 있는 DLL에 우클릭 - 추가 - 새 항목을 눌러서

C# 클래스를 선택해주자
추가를 해주면

이렇게 C# 스크립트가 하나 더 추가된 것을 확인할 수 있다.
아무튼 이제 빌드를 해보자.

Debug에서 Release로 고쳐주고 바로 위에 있는 빌드 탭을 눌러

솔루션 빌드를 눌러주자.

빌드 된 경로와 함께 성공 메시지가 떴다.
빌드 된 경로를 복사하여 탐색기에 붙여 넣은 뒤 들어가 보자.

잘 만들어졌다.
이제 이걸 유니티에 넣어보자.

Plugins라는 폴더를 만들어주고,
(사실 지금 만든 기능은 아무 데나 넣어도 되는데 만약 내가 만든 것이
네이티브 기능들을 건드리는 경우에는 무조건 Plugins 안에 넣어야 하기 때문에 그냥 보여주는 것이다.
이 부분은 유니티 공식 가이드에서 더 자세히 확인 가능하다.)

폴더에 넣어주면 끝이다.
(옆에 BTAI는 신경 쓰지 말자.)

인스펙터를 봐서 이런 식으로 나온다면 정상적으로 들어간 것이다.

대충 아무 스크립트 하나 만들어서 기능이 정상적으로 작동하는지 확인해보자.

using에 아까 만든 DLL의 namespace를 적어주고
클래스를 생성해서 접근한다.

아무 오브젝트 하나 만들고 넣어준 다음 플레이하면,

이렇게 성공한 모습을 볼 수 있다!
ref : https://blog.naver.com/PostView.nhn?blogId=cdw0424&logNo=221634807872
'게임엔진(GameEngine) > Unity3D' 카테고리의 다른 글
유니티 코루틴 호출/중지 방법, 문자열은 문자열로 (0) | 2022.08.11 |
---|---|
How to add layer to layer mask? (0) | 2022.06.15 |
How to find scripts location in Hierarchy? (0) | 2022.06.07 |
유니티 안드로이드 로그캣으로 디버깅 하기 - Unity Android Logcat Debugging. (0) | 2022.06.06 |
유니티에서 async, await 사용하기 (0) | 2022.04.23 |