Docs Menu

Unity용 빠른 시작 - .NET SDK

이 페이지에는 Realm을 설치하고 Unity 프로젝트에 통합하는 방법에 대한 정보가 포함되어 있습니다.

참고

Realm .NET SDK는 다른 버전의 Unity와 호환될 수 있지만 2020.3.12f1 (LTS) 버전은 Realm 팀이 테스트 및 개발에 사용하는 버전입니다. Unity의 UI는 버전마다 변경되는 경우가 많으므로 이 버전을 사용하여 프로젝트가 Realm에서 작동하고 설치 단계가 아래 단계와 일치하는지 확인하는 것이 좋습니다.

Realm 은 Unity 와 함께 사용할 수 있도록 Realm .NET SDK 를 설치할 수 있는 다양한 방법을 제공합니다. 숙련된 Unity 개발자는 타볼을 사용하여 수동으로 Realm 을 설치하는 것이 직관적이라는 것을 알 수 있습니다. 그러나 Realm .NET SDK 는 Unity의 패키지 관리자를 통해 버전 업데이트 알림 을 제공하므로 npm 을 통해 설치하는 것이 좋습니다. .

1

Unity 프로젝트 내에서 Realm을 다운로드하여 사용하려면 먼저 NPM범위 지정 레지스트리로 추가해야 합니다. 범위 지정 레지스트리로 NPM을 추가하면 Unity가 NPM과 통신하도록 구성되므로 Realm과 같은 패키지를 설치할 수 있습니다.

Unity 패키지 관리자 열기 Window Unity 메뉴 상단의 탭 을 클릭합니다. Window dropdown 에서 Package Manager 를 클릭합니다. 그런 다음 오른쪽 모서리에 있는 톱니바퀴 아이콘을 클릭합니다. 드롭다운에서 Advanced Project Settings 옵션을 선택합니다.

'고급 프로젝트 설정'을 선택합니다.

범위 지정 레지스트리 양식에 아래 세부 정보를 입력하고 저장 버튼을 클릭합니다.

name = NPM
URL = https://registry.npmjs.org
Scope(s) = io.realm.unity
.NET SDK 의 최신 릴리스 를 다운로드합니다.
2

이제 가 Unity 에서 Realm .NET SDK를 설치할 수 npm 있으므로 Realm 프로젝트의 매니페스트 파일 에 을 종속성으로 추가해야 합니다. . Visual Studio 에서 'Packages/manifest.json' 파일 열기 또는 다른 텍스트 편집기를 사용할 수 있습니다. 종속성 객체 하단에 "io.realm.unity" 필드를 추가합니다. 및 해당 값, 사용하려는 Realm .NET 버전 번호를 따옴표로 묶습니다.

"io.realm.unity": "<version-number>"

위의 <version-number>을 실제 버전 번호로 바꿔야 합니다. 최신 릴리스 버전은 realm-dotnet GitHub 리포지토리에서 확인할 수 있습니다. 전체 매니페스트 파일은 다음과 같이 작성해야 합니다.

{
"dependencies": {
...
"io.realm.unity": "10.21.0"
},
"scopedRegistries": [
{
"name": "NPM",
"url": "https://registry.npmjs.org/",
"scopes": [
"io.realm.unity"
]
}
]
}

이 파일을 저장하면 Unity는 NPM 레지스트리에서 지정된 버전의 Realm .NET SDK 패키지를 다운로드합니다.

3

NPM에서 Realm 패키지가 다운로드되었는지 확인하려면 Unity 메뉴 상단의 Window 탭을 클릭하여 Unity 패키지 관리자를 엽니다. Window 드롭다운에서 Package Manager을 클릭합니다. "Packages: In Project" 탭에 Realm이 표시됩니다.

Unity Realm 설치

Realm 패키지의 버전 번호 옆에 녹색 확인 아이콘이 표시되면 패키지가 최신 상태라는 의미입니다. 그러나 위쪽 화살표 아이콘이 표시되면 새 버전의 패키지를 사용할 수 있습니다. 이 버튼을 클릭하면 최신 릴리스로 업그레이드할 수 있는 옵션이 표시됩니다.

1

Unity 프로젝트 내에서 Realm 을 사용하려면 먼저 Realm .NET SDK 를 다운로드 해야 합니다.

realm-dotnet 리포지토리 릴리스로 이동합니다. 페이지를 클릭하고 프로젝트 에서 사용하려는 출시하다 까지 아래로 스크롤합니다. 어떤 출시하다 를 사용해야 할지 잘 모르는 경우 왼쪽 행에 ' 최신 릴리스' 라고 표시된 릴리스를 사용할 수 있습니다.

.NET SDK 의 최신 릴리스 찾기

릴리스의 'Assets' 드롭다운까지 아래로 스크롤한 다음 'io.realm.unity-<version-number>.tgz' 링크를 클릭하여 SDK를 다운로드합니다.

.NET SDK 의 최신 릴리스 를 다운로드합니다.
2

다운로드한 Realm .NET SDK tarball 파일을 프로젝트 내부로 이동합니다. 파일 을 프로젝트 폴더로 드래그 앤 드롭하여 이 작업을 수행할 수 있습니다. tarball을 프로젝트 폴더에 복사하고 버전 관리에 커밋하면 프로젝트 에서 작업하는 다른 개발자가 Realm 종속성을 수동으로 다운로드하지 않고도 리포지토리 를 복제하고 빌드 수 있습니다.

다음으로 Unity 패키지 관리자 를 사용하여 프로젝트 에 tarball을 로드해야 합니다. .

패키지 관리자를 열려면 Unity 메뉴 상단의 Window 탭 을 클릭합니다. Window dropdown Package Manager 을(를) 클릭합니다. 패키지 관리자 모델이 열리면 모델 왼쪽 상단에 있는 + 아이콘을 클릭합니다. Add package from tarball... 옵션을 선택합니다.

tarball Unity UI 에서 패키지 추가

"io. 영역.unity-bundled-<version-number>.tgz" 파일 을 클릭하여 프로젝트 가져오기를 시작합니다.

C# 스크립트 만들기 또는 이미 생성한 C# 스크립트를 사용할 수 있습니다. Visual Studio 에서 해당 스크립트 열기 또는 다른 텍스트 편집기를 열고 다음 줄을 추가하여 Realm 패키지를 가져옵니다.

using Realms;

Realm .NET SDK 로 개발할 때 API 메서드는 Unity를 사용하든 다른 플랫폼을 사용하든 관계없이 동일합니다. 그러나 Unity에는 몇 가지 스크립팅 제한 사항 이 있으므로 , 프로젝트를 개발할 때 다음과 같은 추가 고려 사항을 염두에 두어야 합니다.

Unity managed 코드 스트리핑 을 수행합니다. 바이너리 크기를 줄이기 위해 빌드 에서 사용하지 않는 코드를 삭제합니다. 이로 인해 BSON 을 C# 클래스로 역직렬화할 때 문제가 발생할 수 있습니다. IL2C++ 를 사용하는 플랫폼의 경우 iOS 와 같은 경우 managed 코드 스트리핑이 기본값 활성화되어 있습니다. BSON 으로 작업할 때는[Preserve] 속성 을 사용하세요. 직렬 변환기에 의해서만 채워지는 유형 속성에 대한 managed 코드 스트리핑을 방지합니다. 해당 속성은 리플렉션 을 사용하므로 , Unity 는 속성 세터가 사용되었음을 정적으로 추론할 수 없습니다. 즉, [Preserve] attribute 을 적용 하지 않으면 Unity 가 해당 속성을 제거합니다. BSON 역직렬화를 수행할 수 있는 경우의 예는 MongoDB 쿼리함수 호출 문서를 참조하세요.

AppDomain.DomainUnload 이벤트 내에서 Realm .NET SDK에 액세스할 수 없습니다. 또는 Application.quitting 이벤트. 즉, 플레이어 애플리케이션이 종료되는 동안에는 Realm에 데이터를 쓸 수 없습니다. 앱이 종료되기 직전에 일부 데이터를 저장해야 하는 경우 Application.wantsToQuit 대신 이벤트를 생성합니다.

참고

Windows에서 Unity를 사용하여 개발할 때 알려진 문제

Windows에서 Device Sync를 사용하는 경우 여러 프로세스가 동기화된 동일한 영역에 액세스하려고 하기 때문에 프로젝트의 여러 인스턴스를 실행할 때 프로젝트가 중단될 수 있습니다. 로컬 영역을 사용하는 경우 충돌 없이 프로젝트의 여러 인스턴스를 실행할 수 있습니다.

Realm 커뮤니티는 Realm .NET SDK의 사용법을 보여주는 많은 프로젝트를 만들었습니다. 아래에서 Unity에서 Realm .NET SDK 사용법을 보여주는 예시를 확인해 보세요!

참고

MongoDB 문서 팀은 이러한 예시를 직접 유지 관리하지 않습니다.