Unity 검색

모바일, 그 이상

Windows 10의 영향력과 Windows 스토어의 새로운 시장 기회를 적극 활용해 보세요.

포팅 가이드

소개

점점 많은 분이 Unity를 사용해 게임을 빌드하고 있습니다. 특히, 단일 코드베이스를 활용하여 다양한 플랫폼과 장치 유형에 액세스할 때는 더욱 그렇습니다. 이러한 진리는 UWP(유니버설 Windows 플랫폼)으로 Windows 10용 게임을 빌드할 때도 통용됩니다. 본 백서에는 여러분이 이미 알고 있는 Unity 지식을 활용하여 UWP용 게임을 빌드하는 방법이 담겨 있습니다. 여기에서 다루는 주제는 다음과 같습니다.

  • 기존 게임을 UWP 용으로 컴파일하기
  • Windows 환경에서의 모범 사례 이해하기
  • 플랫폼 특정 기능 구현하기
  • 핵심 플러그인 이해하기
  • Windows 스토어로 출판하기

여기서는 실제 게임을 사용하여 Unity 게임을 UWP로 포팅하는 방법을 설명하고자 합니다. 이러한 방식은 Unity 게임을 UWP로 내보내는 것은 물론, 나아가 Windows 스토어로 배포하는 데 있어 알아두어야 할 관련 사항과 고려할 점을 하나하나 살펴보는 데 도움이 될 것입니다.

참고: 이 가이드의 대상은 이미 기초적인 Unity3D 사용 방법을 잘 알고 있는 사람입니다. Unity3D에 관한 자세한 내용은 언제든지 Unity 자습서를 통해서 학습할 수 있습니다.

Unity로 UWP 게임을 작성하는 데 필요한 사항

Unity 게임을 개발하고 컴파일하며 Windows 스토어로 제출하려면 다음이 필요합니다.

  • Unity 5.3.5: Unity 무료 버전과 Unity Pro 버전 모두 사용할 수 있습니다. Windows 스토어 출판을 위한 애드온은 양쪽 버전 사용자 모두에게 무료로 제공됩니다.
  • Visual Studio: 무료 Visual Studio Express를 포함하여 모든 버전의 Visual Studio SKU를 사용할 수 있습니다. UWP(유니버설 Windows 플랫폼)를 대상으로 할 경우에는 Visual Studio 2015 Update 1이 필요합니다.
  • Windows 10: Windows 10 라이선스가 없는 분은 90일 평가판을 입수하시기 바랍니다. Mac OS X를 사용하거나 Apple 하드웨어에 설치할 경우에는 Boot Camp, VMWare 또는 Parallels를 사용하여 설치하는 방법을 확인해보십시오.
  • Microsoft 계정: 개발자 라이선스를 얻으려면 무료 Microsoft 계정이 필요합니다.
  • Windows 스토어 개발자 계정: Windows 스토어로 게임을 제출하려면 개발자 계정이 필요합니다. 이 과정에서 스토어로 앱이나 게임을 제출할 수 있는 개인 개발자 또는 사업자로 등록하여 인증을 받습니다. 여기서 등록한 내용은 Windows Phone에서 공유됩니다. 즉, 한 번만 등록하면 양쪽 스토어에 앱을 제출할 수 있습니다. Microsoft가 후원하는 모든 프로그램(예: 학생용 또는 스타트업용)에서 무료 Windows 개발자 센터 계정을 이용할 수 있지만, 본 등록 과정에서 개인 개발자는 소정의 등록 비용을 지불해야 할 수 있습니다.
  • Windows 10 테스트 장비: 멀티 터치와 다양한 디스플레이 해상도를 시뮬레이션하는 시뮬레이터가 제공되지만, 모바일/터치 콘텐츠를 개발한다면 터치 기능을 갖춘 실제 ARM 기반 모바일 장치에서 테스트하는 것이 좋습니다.

이 문서는 Unity 5.3.5, Visual Studio 2015 Update 2, Windows 10 버전 1511 환경에서 작성되었습니다. 다양한 응용 프로그램 프로그래밍 인터페이스 및 기타 가능한 비 호환성을 갖춘 구형 환경으로 최소한 Unity 5.3.2 및 Visual Studio Update 1을 갖추어 둔다면 개발 작업을 진행하는 데 유용할 것입니다.

Windows 스토어

이제 Windows 스토어용 UWP 앱을 한 곳에서 제출하고 업로드할 수 있습니다. 물론, 여전히 구형 운영 체제를 사용하는 장치를 대상으로 콘텐츠를 개발해도 되지만, 이 문서에서는 UWP 앱으로 개발한 게임을 Windows 스토어에 제출하는 데 초점을 맞추고자 합니다.

NuGet

NuGet은 .NET을 비롯한 Microsoft의 개발 플랫폼을 위한 패키지 관리자로, 개발자들이 제삼자 라이브러리를 찾고 프로젝트에 종속 관계로 추가할 수 있게 해줍니다. NuGet을 통해 필요한 모든 Windows 라이브러리를 제공하여 기본적으로 사용할 수 있습니다. 또한, NuGet은 Unity의 사용자 스크립트에서 호출하는 DLL을 관리하는 데도 사용할 수 있습니다.

NuGet은 Unity 게임을 UWP로 포팅하는 데도 필요합니다. Unity에서 Visual Studio UWP 앱으로 프로젝트를 내보낼 때, Unity는 NuGet에 의존하여 .NET 코어를 대상으로 삼는 데 필요한 모든 라이브러리를 설치합니다.

Windows 스토어로의 배포를 위한 Unity 설정

이 섹션에서는 기존 Unity 게임을 가져와서 UWP(유니버셜 Windows 플랫폼) 앱으로 Windows 스토어에 대한 배포를 준비하는 데 필요한 내용들을 알아봅니다. 여기서 다룰 내용은 다음과 같습니다.

  • Windows 10 개발자 모드 사용 가능
  • Unity에 게임 정보 입력
  • Windows 10에서 UWP로 내보내기
  • Window 10 SDK로 Visual Studio 2015 Update 2에서 솔루션 빌드
  • Windows 스토어에 게임 연결
  • 로고, 아이콘, 스플래시 화면 등 필수 이미지/콘텐츠 추가(Unity에서 완료하지 않았을 경우)
  • Windows 앱 인증 키트(WACK) 실행
  • Windows 스토어에 출판

Windows 10 개발자 모드 사용 가능

특정 장치에서 앱을 개발, 설치 또는 테스트하기 위해 개발자 라이선스를 등록할 필요가 없어졌습니다. 이제부터는 해당 장치의 설정에서 장치를 한 번만 활성화하면 이러한 작업을 수행할 수 있습니다.

Windows 10 장치 활성화

데스크톱이든 태블릿이든 스마트폰이든 상관없습니다. Windows 10 장치라면 시스템 설정에서 장치를 개발용으로 활성화할 수 있습니다.

이 작업을 위해서는 시스템 설정으로 이동하여 '업데이트 및 보안'을 선택하세요. 다음으로 '개발자용'을 선택합니다. 여기서 '개발자 모드'를 선택하여 활성화하면 됩니다.

개발자 모드 활성화 방법에 관한 자세한 내용은 여기를 참조하세요.

Unity에 게임 정보 입력

게임을 Unity용으로 준비하기 위한 초기 절차 중 하나는 올바른 빌드 설정을 구성해두는 것입니다.

Unity 게임을 UWP(유니버설 Windows 플랫폼) 앱으로 빌드하려면 다음이 필요합니다.

Unity에서 설정을 구성하려면 먼저 'File'(파일)을 클릭한'Build Settings'(빌드 설정)를 클릭합니다.

다음으로, Player Settings… (플레이어 설정…) 버튼을 클릭합니다.

이렇게 하면 Player Settings 창에서 게임 설명을 입력할 수 있습니다.

필요하다면 해당 Player Settings 창에서 Windows 스토어에 표시될 로고 및 타일 이미지를 추가해도 됩니다. 하지만 Windows 스토어용으로 Unity 앱을 빌드하는 데 필요한 다른 절차와 마찬가지로 콘텐츠를 추가하는 방법 역시 다양하여, Unity IDE를 통해 이미지를 추가하는 대신에 나중에 Visual Studio를 통해서 추가해도 됩니다.

이제 빌드 설정이 Unity3D에 올바르게 구성되었으며, UWP로 내보낼 수 있습니다.

UWP(유니버설 Windows 플랫폼)로 내보내기

이 섹션에서는 UWP(유니버설 Windows 플랫폼)에 대한 기존 Unity 지원 및 Unity에서 UWP로 내보내는 방법을 살펴봅니다.

Unity3D는 Unity 5.2부터 UWP 앱을 지원해왔습니다. 현재는 아래에 설명된 것처럼 Build Settings 창의 Windows 스토어 플랫폼에서 Universal 10 SDK를 선택하여 UWP로 콘텐츠를 내보낼 수 있습니다.

Unity 5.3.5에서는 Visual Studio 2015 솔루션 파일을 내보내므로 Windows 10 장치에서 해당 파일로 빌드 및 실행할 수 있습니다.

지원하는 아키텍처는 ARM, x86, x64의 3종류입니다. 또한, 게임 프로젝트에서 .NET Core 5.0 프레임워크를 사용할 수 있습니다.

Build Settings에서 Build 버튼을 클릭하면 Build Windows Store(Windows 스토어 빌드) 대화 상자가 나타나며 여기서 게임 빌드에 사용할 폴더를 선택합니다.

폴더 선택이 완료되면 Unity가 선택한 플랫폼에 맞추어 게임을 빌드하기 시작합니다. 이 작업은 게임의 크기가 클 경우 수 분 정도 걸릴 수 있습니다:

이제 Windows Explorer 창에서 Unity가 생성한 모든 파일이 보관된 폴더를 보여줄 것입니다.

본 프로세스에 관한 자세한 내용은 Unity3D 문서고에서 Windows에 관한 내용을 살펴보세요.

Windows 10 SDK를 사용하여 Visual Studio 2015 Update 2에서 솔루션 빌드하기

UWP(유니버설 Windows 플랫폼) 앱을 판매하거나 배포하려면 appxupload 패키지를 생성해야 합니다. 이 패키지는 Windows 스토어에 앱을 판매하거나 다른 사용자에게 배포할 수 있게 해줍니다. appxupload 패키지를 생성할 때는 테스트 및 테스트용 로드에 사용되는 다른 appx 패키지가 생성됩니다. 장치에 appx 패키지를 테스트용으로 로드하여 직접 app을 배포할 수 있습니다.

Windows 10에서는 Windows 스토어에 업로드 가능한 하나의 패키지(.appxupload)를 생성합니다. 이렇게 하면 모든 Windows 10 장치에서 앱을 설치하고 실행할 수 있습니다.

참고: Windows 8.1 앱용 앱 패키지를 만들어야 한다면 이 지시사항을 따르시기 바랍니다.

이제 Visual Studio에서 게임을 컴파일할 준비를 마쳤습니다.

먼저 x86나 x64 중 하나를 플랫폼으로 선택합니다.

메뉴에서 빌드 -> 솔루션 빌드를 선택합니다.

NuGet 패키지 관리자가 패키지를 복구하도록 허용합니다.

다음으로 실행을 클릭하고 로컬 컴퓨터가 선택되었는지 확인합니다.

가져온 빌드를 확인합니다.

이 작업이 완료되면 Windows 스토어에서 앱을 판매할 준비를 마치게 됩니다. 내부용으로만 사용하며 판매할 계획이 없는 LOB(기간 업무) 앱은 테스트용으로 로드하여 아무 Windows 10 장치에나 설치하면 됩니다.

자세한 내용은 Windows 10용으로 유니버설 Windows 앱 패키징하기를 참조하세요.

앱을 Windows 스토어에 연결하기

먼저 프로젝트메뉴에서 스토어 -> 응용 프로그램을 스토어에 연결...을 선택합니다..

이 작업을 수행할 때는 매니페스트 디자이너의 패키징 탭에 있는 필드 대부분이 자동으로 업데이트됩니다. 다음은 귀하의 로컬 컴퓨터에 있는 현재 프로젝트에 대해 앱 매니페스트 파일로 다운로드되는 값입니다.

  • 패키지 표시 이름
  • 패키지 이름
  • 게시자 ID
  • 게시자 표시 이름
  • 버전

기본 package.appxmanifest 파일을 해당 메니페스트에 대한 사용자 정의 .xml 파일을 생성하여 오버라이드할 때는 앱을 스토어에 연결할 수 없습니다. 사용자 정의 매니페스트 파일을 스토어에 연결하려고 하면 오류 메시지가 나타날 것입니다. 사용자 정의 패키지 매니페스트를 생성하지 않는 것이 좋습니다.

자세한 내용은 유니버설 Windows 앱을 Windows 10용으로 패키징하기

앱을 스토어에 제출할 준비하기

이름을 예약하여 앱 만들기를 완료했다면 이제 게시 작업을 시작할 수 있습니다. 첫 번째 절차는 콘텐츠 제출입니다.

앱이 완성되어 게시 준비를 마칠 때 콘텐츠를 제출하는 것이 일반적이지만, 코드 작성을 시작하기 전부터도 정보 입력을 시작할 수 있습니다. 제출한 내용은 대시보드에 저장되므로 준비가 되면 언제든지 작업을 수행할 수 있습니다.

앱의 게시가 완료되면 대시보드에 다른 콘텐츠를 제출하여 업데이트된 버전을 게시할 수 있습니다. 새 콘텐츠를 제출한 후에는 필요한 변경 사항을 무엇이든 만들고 게시할 수 있습니다. 이러한 변경 사항은 새 패키지 업로드 또는 가격이나 범주 변경과 같은 단순한 내용 변경 등 어떠한 유형이든 가능합니다.

앱용 콘텐츠를 새로 제출하려면 업데이트 를 클릭하세요. 앱 개요 페이지에 표시된 가장 최근에 제출한 콘텐츠의 옆에 있습니다.

앱 제출 확인 목록

Unity는 앱을 제출하는 데 필요한 최소한의 에셋을 제공합니다. 하지만 자체적으로 제작한 이미지와 에셋을 사용하는 것이 좋습니다. 다음은 시각적 에셋 섹션과 Package.appxmanifest 파일의 스크린샷입니다.

빌드 과정에서 제공되는 모든 에셋을 검토할 수 있습니다.

자세한 내용은 앱 제출 콘텐츠 (MSDN)

Windows 앱 인증 키트(WACK) 실행

귀하의 앱이 Windows 스토어에 게시되는 확률을 최대로 높이거나 Windows Certified 에 선정되려면 인증을 위해 제출하기 전에 로컬 컴퓨터에서 확인하고 테스트하세요. 이 주제에서는 Windows 앱 인증 키트를 설치하고 실행하는 방법을 알아봅니다. WACK에서 앱의 성능이나 API 준수 등 다양한 항목에 대해 일련의 테스트를 수행합니다. 이 키트에서 수행하는 특정 테스트에 관한 자세한 내용은 다음 주제를 참조하세요.

필수 구성 요소

UWP(유니버설 Windows 플랫폼) 앱을 개발 중이라면...

Windows10용 Windows 소프트웨어 개발 키트(SDK)에 포함된 Windows 앱 인증 키트 버전 10을 설치하려면 먼저 테스트를 수행할 앱 패키지를 만들어야 합니다. 프로젝트 메뉴에서 스토어 -> 앱 패키지 만들기…를 선택하세요.

패키지 만들기가 완료되면 다음 창이 나타나며 여기에서 Windows 앱 인증 키트(WACK)를 시작할 수 있습니다.

WACK을 시작하면 다음 대화 상자가 나타납니다.

여기서 다음 을 클릭하여 검증 절차를 진행합니다. 팝업 창이 여러 개 나타날 수 있지만, 이것은 도구에서 게임을 실행하고 테스트를 수행하는 과정에서 나타나는 현상이므로 놀라지 않아도 됩니다. 이러한 테스트는 완료까지 수 분 정도 걸릴 수 있습니다.

테스트가 완료되면 다음 창이 나타납니다. 테스트가 실패하면 내용을 검토하고 수정한 다음 테스트에 통과할 때까지 같은 절차를 반복합니다.

링크 '결과를 보려면 여기를 클릭하십시오' 를 클릭하면 테스트 결과가 담긴 브라우저가 열립니다.

여기서 모든 테스트를 검토하고 실패한 이유를 정확히 확인하여 문제를 수정할 수 있습니다. 모든 문제의 수정을 완료하고 테스트를 다시 실행하면 다음 결과가 나타날 것입니다.

자세한 내용은 Windows 앱 인증 키트 사용하기 (MSDN)

Windows 스토어에 출판

게임의 빌드와 업로드를 마쳤으니 이제 개발 계정으로 이동하여 게임을 스토어에 제출해야 합니다. 제출 프로세스를 시작하려면 다음 절차를 따르세요.

  1. 브라우저를 열고 https://dev.windows.com으로 이동합니다.
  2. 본인의 계정으로 로그인하고 대시보드 링크를 클릭합니다.
  3. Visual Studio에서 만든 앱 패키지의 이름을 선택합니다.
  4. '제출 시작'을 클릭합니다.
  5. 다음 절차에서는 게임에 관한 정보를 입력해야 하며, 입력을 끝마쳐야 제출을 완료할 수 있습니다. 이러한 링크를 클릭하면 새로운 페이지가 열리며 제출 프로세스의 각 과정을 진행할 수 있습니다.

디라이팅(De-Lighting) 툴은 패키지 페이지이며, 제출할 수 있는 패키지 파일 형식은.xap, .appx, .appxupload 및 또는 .appxbundle입니다. 이 절차에서는 앱을 게시하려는 모든 종류의 운영체제용 패키지를 업로드할 수 있습니다.

고객이 앱을 다운로드하면 Windows 스토어에서 해당 앱에서 사용할 수 있는 모든 패키지를 검토하고 각 고객의 장치에서 가장 잘 작동하는 패키지를 자동으로 제공합니다.

패키지에 무엇이 포함되어 있으며 어떠한 구조를 이루어야 하는지를 알아보려면 앱 패키지 요구사항을 참조하세요. 또한, 다음 사항도 알아두는 것이 좋습니다.

제출 콘텐츠에 패키지 업로드하기

패키지를 업로드하려면 업로드 필드에 패키지를 끌어다 놓거나 클릭하여 파일을 찾습니다. 패키지 페이지에서 업로드할 수 있는 파일 형식은 .xap, .appx, .appxupload 및/또는 .appxbundle 입니다.

참고: Windows 10의 경우, 항상 이곳에 .appxupload 파일을 업로드해야 하며, .appx이나 .appxbundle은 지원하지 않습니다. Windows 스토어용 UWP(유니버설 Windows 플랫폼) 앱의 패키징에 관한 자세한 정보는 다음을 참조하세요: 유니버설 Windows 앱을 Windows 10용으로 패키징하기

패키지 검증 중에 문제가 발견되면 해당 패키지를 제거하고 문제를 해결한 다음 다시 업로드해야 합니다. 자세한 내용은 패키지 업로드 오류 해결하기를 참조하세요.

구현 참조

이 섹션에서는 Jb Evain이 작성한 간단한 3D 농구 게임을 참조하여 20분 이내에 빌드해볼 것입니다. 게임을 처음부터 만들고 싶은 분은 Jb의 이야기를 따라서 진행해보세요. 이 게임을 만드는 데 필요한 유일한 외부 에셋은 Hoop.3ds 파일입니다.

완성된 프로젝트 패키지가 필요하다면 Basketball-At-Build.zip 파일을 다운로드 하세요. 모든 코드와 에셋을 갖추었으며 플레이도 해볼 수 있습니다. 압축 파일을 푼 다음, 본 섹션의 나머지 과정을 따르시면 됩니다.

다음은 완성된 게임의 한 장면입니다.

농구

다음 몇 단계의 절차에서는 게임을 사용하여 위에서 설명한 절차를 실제로 확인하면서 Windows 스토어로 게임을 제출할 준비를 해볼 것입니다.

게임을 처음부터 빌드하려면 이러한 절차를 따라야 합니다. 완성된 프로젝트를 다운로드했다면 1단계에서 8단계 절차를 넘어가세요.

  1. Unity를 열고 새 프로젝트를 만듭니다. 프로젝트 이름은 Basketball이나 Awesome Game 등 원하는 대로 지정하세요.
  2. 게임 장면을 하나 만듭니다.
  3. 다운로드 폴더에서 Hoop.3ds를 끌어다가 에셋 창에 놓습니다.
  4. 선택 Assets(에셋) -> Import Packages(패키지 가져오기) -> Characters(캐릭터) 순으로 선택합니다.
  5. 에셋의 다운로드가 완료되면 Import(가져오기) 버튼을 클릭하세요. 이렇게 하면 프로젝트로 모든 에셋을 가져옵니다.
  6. 구체를 만들고 매터리얼을 적용하여 색상과 반사광을 연출합니다.
  7. Component를 장면에 배치합니다.
  8. 농구대에 볼을 던질 수 있도록 슈팅 스크립트를 작성합니다.
  9. 또한, 프로젝트 탭에서 Assets(에셋) 트리를 확장하고 Scenes(장면) 폴더를 클릭합니다.
  10. 장면을 두 번 클릭하여 게임 불러옵니다. 다음으로 진행하기 전에 게임을 실행하여 잘 작동하는지 확인해볼까요?
  11. 게임이 실행된다는 것을 확인했으니 이제 여러분의 기술을 시험해보세요!

Unity로 Visual Studio 프로젝트 만들기

Unity로 게임을 가져와서 테스트를 마쳤으므로 Visual Studio 솔루션 만들기로 넘어가겠습니다.

메뉴에서 File -> Build Settings… 순으로 클릭하여 Build Settings 창을 열고 Scenes In Build 보기에 선택한 장면이 표시되도록 하고, 다음 항목이 확실한지 확인합니다.

  • 플랫폼 의 설정: Windows 스토어 (아닐 경우, Windows Store -> Switch Platform클릭)
  • SDK 의 설정: Universal 10
  • UWP Build Type 의 설정: XAML
  • Unity C# 프로젝트개발 빌드 가 모두 선택되어 있음

다음으로 Player Settings… 버튼을 클릭하고 정보가 올바른지 확인합니다. 이 게임의 화면 방향은 Landscape (가로)입니다. Default Orientation (기본 방향)이 Landscape 로 선택되어 있는지 확인하세요.

마지막으로 Build Settings 창에서 Build 버튼을 클릭합니다. 프로젝트를 빌드할 폴더를 선택하는 창이 나타납니다. 여기서 지정한 창에 Visual Studio 솔루션과 프로젝트가 생성됩니다.

Visual Studio를 사용하여 앱 패키지 및 WACK 만들기

Visual Studio 솔루션을 만드는 데 성공했으니 이제 솔루션으로 옮겨가서 그곳에서 설정을 진행할 수 있을 것입니다.

본인의 컴퓨터에 생성된 솔루션을 두 번 클릭합니다.

Visual Studio 2015에서 로딩 중인 세 프로젝트를 엽니다. 오류가 나타나더라도 걱정하지 마세요. 이것은 자원을 비동기적으로 불러오는 Visual Studio의 특성에 기인한 것입니다. 모든 자원의 로드가 끝날 때까지 기다렸다가 메뉴의 빌드 -> 솔루션 빌드 를 선택하여 Debug 모드에서 프로젝트를 빌드하면 됩니다.

다음으로 아래 작업을 수행합니다.

  1. 빌드가 성공했는지 검증합니다
  2. 모드를 빌드 -> 솔루션 빌드 에서 마스터 로 변경합니다. 마스터 모드를 사용하여 Windows 스토어에 UWP 앱을 제출해야 하므로 이 작업은 매우 중요합니다. (마스터 모드는 가장 높은 성능을 제공하기 위해 안전 확인을 제거하고 프로파일러를 비활성화합니다.)
  3. 선택 스토어 -> 앱 패키지 만들기... 순으로 프로젝트 메뉴에서 선택합니다.

이번이 처음이거나 며칠이 지났다면 Windows 스토어 개발자 계정으로 인증을 요청하는 창이 나타날 것입니다. 보안 암호를 입력하여 본인의 계정을 확인해야 합니다.

빌드가 성공하면 Windows 응용 프로그램 인증 키트 시작 버튼을 클릭하여 계속합니다. 이 테스트 프로세스는 매우 긴 시간을 들여서 귀하의 게임이 Windows 스토어에 제출할 수 있는 상태인지 검증합니다.

테스트를 통과하면 다음 화면이 나타날 것입니다.

Unity 게임을 UWP용으로 디자인하기

Unity에서는 여러 플랫폼으로의 콘텐츠 배포를 가능하게 하고자 모든 것이 갖춰진 도구 모음을 제공하며, 여기에는 UWP(유니버설 Windows 플랫폼) 앱에 대한 도구 지원도 포함됩니다. Unity에서 제공하는 도구는 다음을 비롯한 기타 다양한 영역을 처리할 수 있습니다.

  • 다양한 해상도 및 화면 크기 조절
  • 가로 세로 비율

다양한 해상도 및 화면 크기 조절

여러분의 Unity 게임은 즉시 다양한 해상도와 화면 크기 조절을 처리할 수 있습니다. 이러한 지원의 한 요소인 메뉴와 HUD는 직관적이지 않을 수는 있을지언정 여전히 게임에 있어서 매우 중요한 자리를 차지합니다.

Unity가 선보이는 새 사용자 인터페이스 시스템 Unity UI를 만나보세요. 이 새로운 UI 시스템은 게임 내에 고급스러운 인터페이스를 구현해주며, 제삼자 플러그인을 통해 사용할 수 있었던 많은 기능을 제공합니다. 메뉴와 HUD를 올바르게 구성하고 다양한 해상도에서 테스트해보는 것은 매우 중요합니다. Windows Forms나 WPF에 익숙한 분이라면 UI 요소를 앵커에 배치하여 화면에 맞춰 크기를 조절할 수 있었던 것을 기억하실 것입니다. Unity에서는 그와 똑같은 기능을 제공합니다. 이외에도 화면 크기 변경에 맞추어 UI 요소의 크기를 변경할 것인지 그대로 유지할 것인지도 정의할 수 있습니다.

가로 세로 비율

Unity에서는 다양한 화면 해상도와 화면 크기 조절 이외에도 다양한 가로 세로 비율을 지원합니다. 지원하려는 여러 가로 세로 비율을 게임 내에서 테스트해보는 것은 대단히 중요하지만, Unity와 함께라면 어떠한 가로 세로 비율에 대해서도 훨씬 간단하고 쉽게 테스트해볼 수 있습니다.

모든 것이 준비되었는지 확인하려면 에뮬레이터는 물론 액세스 가능한 대상 장치에서 테스트해보는 것이 좋습니다.

Visual Studio 2015 Tools for Unity

Visual Studio에는 Unity 게임의 Windows 스토어 게시를 위한 준비를 도와주는 다양한 도구가 기본적으로 포함됩니다. 이러한 도구의 예는 다음과 같습니다.

  • Unity 프로젝트 탐색기
  • Visual Studio에서 스크립트 작성 및 디버깅
  • 그래픽 디버거

Visual Studio Tools for Unity

Unity 5.2부터는 Visual Studio 2015 Tools for Unity를 별도로 가져오지 않아도 됩니다. Visual Studio 2015에서 도구 -> 확장 및 업데이트 로 이동하여 Visual Studio 2015 Tools for Unity를 설치하면 됩니다.

다음 섹션에서는 Visual Studio Tools for Unity의 최신 버전을 입수하고 싶거나 5.2 이전의 Unity를 사용 중일 경우에 따라야 할 절차를 소개합니다. 5.2 이상의 Unity와 함께 Visual Studio 2015를 사용 중이라면 다음 절차는 중요하지 않으므로 건너뛰어도 됩니다.

Visual Studio Tools for Unity를 사용하면 Microsoft Visual Studio 안에서 Unity 게임을 작성하고 디버그할 수 있습니다. 중단점을 추가하고 변수 및 복잡한 식을 평가하는 기능 이외에도 Unity 프로젝트 탐색기를 사용하여 마치 Unity를 사용하는 것처럼 프로젝트를 살펴볼 수 있습니다. 마지막으로, Visual Studio에서도 Unity에서와 다름없는 동일한 콘솔 결과가 제공됩니다.

다음 스크린샷에는 Visual Studio 2015 Tools for Unity를 설치하는 절차가 담겨 있습니다. 확인란을 선택하여 약관에 동의하시기 바랍니다.

설치가 완료되면 설치 완료를 알리는 대화 상자가 나타납니다.

설치가 완료되었으니 이제 Unity를 열고 프로젝트에 이 도구를 추가해야 합니다.

다음과 같은 Unity 대화 상자가 나타날 것입니다. 모든 항목이 선택된 채로 놔두고 Import(가져오기) 버튼을 클릭하세요.

프로젝트 계층에 새 폴더가 만들어진 것을 확인할 수 있을 것입니다.

아래를 참조하여 본인의 Build Settings가 Visual Studio 사용을 위해 올바르게 구성되었는지 확인하세요. 'Unity C# Projects'와 'Development Build'가 모두 선택되어 있어야 합니다.

이제 Visual Studio를 사용하여 스크립트를 작성하고 디버그를 할 수 있게 되었습니다. 참고: 본 설치 프로세스는 5.2 버전 이전의 Unity를 사용 중일 경우에만 필요합니다.

Visual Studio에서 스크립트 작성 및 디버깅

Unity에서 스크립트를 두 번 클릭하면 Visual Studio가 시작됩니다. 예를 들어, Shooter.cs 스크립트를 선택하고 해당 스크립트를 Visual Studio에서 시작하면 다음 화면이 나타날 것입니다.

이제, 공 던지기를 시작하는 GetButtonDown 호출을 디버그하려면 12행에 중단점을 추가하고 Attach to Unity 버튼을 클릭하세요.

이제 Unity로 돌아가서 해야 할 일은 Play 버튼을 클릭하여 게임을 시작하는 것뿐입니다. 우리는 업데이트 가 시작될 것임을 알고 있으므로 마우스 왼쪽 단추를 클릭하면 Visual Studio의 12행에서 게임이 일시 중지된 것을 확인할 수 있습니다.

디버깅 워크플로는 모든 Visual Studio 프로젝트와 동일하게 진행됩니다.

그래픽 디버거

Visual Studio 2015에는 매우 강력한 그래픽 디버거가 기본적으로 제공되어 게임의 최적화를 도와줍니다.

먼저 시스템에 그래픽 도구 가 추가되었는지 확인해보겠습니다. Windows에서 설정 > 시스템 > 앱 및 기능 > 선택적 기능 관리 순으로 선택합니다. 만약 설치되어 있다면 목록에 그래픽 도구가 보일 것입니다.

목록에 없을 경우에는 기능 추가 를 선택하고 목록에서 그래픽 도구를 클릭합니다. 설치 중에 문제가 발생하면 MSDN 문서에서 그래픽 진단 도구 관련 항목을 참조하시기 바랍니다.

그래픽 도구를 사용하려면 Unity에서 Visual Studio 빌드를 사용하여 Visual Studio를 사용하는 게임을 열어야 합니다. Visual Studio에서는 아래와 같이 디버그 -> 그래픽 -> 그래픽 디버깅 시작 순으로 클릭하여 메뉴에서 해당 도구를 사용할 수 있습니다.

게임이 시작되면 다음 UI를 볼 수 있을 것입니다.

프레임 캡처 아이콘을 클릭하여 게임의 현재 프레임을 캡처하세요. 게임 플레이의 다양한 부분을 캡처할 수 있습니다.

프레임을 두 번 클릭하면 해당 프레임에 관한 자세한 분석이 나타납니다. 그래픽 이벤트 목록 창의 그리기 호출에서 앞뒤로 움직일 수 있으며, 개별 픽셀을 선택하고 그래픽 픽셀 기록 창에서 볼 수 있습니다.

참고: 그래픽 진단 파일은 크기가 매우 커질 수 있습니다. 자세한 정보는 Visual Studio 그래픽 진단을 방문하세요.

Unity 앱과 UWP 앱의 차이점 이해하기

Unity는 Scripting Backend라고 하는 프레임워크를 사용하여 스크립트 작성을 지원합니다. 현재 지원하는 백엔드는 Mono, .NET 및 IL2CPP의 3가지입니다. Windows 스토어용으로 제작하는 앱은 .NET과 IL2CPP만 사용할 수 있습니다. Unity의 Build Settings 창에서 Player Settings(플레이어 설정) 버튼을 클릭하여 Scripting Backend 를 선택할 수 있습니다.

Unity IDE에서는 .NET을 사용한 스크립트가 .NET 버전 3.5를 참조합니다. 하지만 게임을 Visual Studio로 내보내면 모든 C# 코드가 .NET 버전 4.5의 하위 집합인 .NET Core에 대하여 컴파일됩니다. ( 참고: 하지만 스크립팅 백엔드로 IL2CPP를 사용하면 Windows 스토어 앱이 계속해서 .NET 3.5를 사용합니다.) 다음 코드를 Unity 스크립트에 실제로 쓰면서 이 내용을 직접 확인하시기 바랍니다.

        
          System.Collections.SortedList lst = new SortedList();
        
      

형식 정의를 확인하기 위해 Visual Studio에서F12 를 누르면(위치: SortedList ) mscorlib 라이브러리에서 해당 클래스가 나타나는 것을 볼 수 있을 것입니다.

내보낸 프로젝트에 같은 코드를 삽입하고 SortedList 형식에서 F12를 누르면 .NET Core의 일부인 NuGet 패키지에 이 버전의 클래스가 포함되어 있음을 알 수 있을 것입니다.

예전에는 .NET 3.5에 .NET Core에 포함되지 않은 형식 또는 메서드가 있을 경우 문제가 발생할 수 있었습니다. 즉, 공백을 메우고 형식뿐만 아니라 확장 메서드를 제공하기 위해 WinRTLegacy 와 같은 도우미 라이브러리가 필요했습니다.

팁: Unity와 .NET 코어 간의 누락된 형식에 대한 가이드를 찾아볼 때는 주의하시기 바랍니다. 많은 내용이 오래되었으며 부정확할 수 있습니다.

Unity와 UWP 간의 핵심적인 차이를 이해하는 것은 변함없이 중요하지만, .NET 3.5에서 .NET Core로 포팅할 때 누락되는 형식과 메서드와 관련된 문제는 .NET Core의 성장에 따라 계속해서 개선되고 있습니다. 예를 들어, .NET 3.5 이후에 도입되었던 System.Threading.Tasks 는 .NET Core의 일부입니다. 또한, .NET 3.5에 없는 .NET Core 기능을 구현하려고 할 때 다른 방향의 문제가 발생할 수 있습니다.

IL2CPP를 스크립팅 백엔드로 사용한다면 Unity 에디터 및 Windows 스토어 앱 사이의 API 표면이 같아진다는 점을 알아두는 것이 좋습니다.

플랫폼 특정 기능

Unity와 UWP(유니버설 Windows 플랫폼)는 서로 다른 플랫폼이므로 둘 사이의 포팅 작업은 장점도 있지만 어려운 점도 있습니다.

성능 최적화

UWP 앱은 최적화된 네이티브 기계어 코드를 생성하는 .NET 네이티브를 사용하므로 게임의 시작 시간이 단축되며 배터리 소모도 줄어듭니다. 이러한 최적화의 영향은 게임의 복잡도에 따라 다르지만, .NET 스크립팅 백엔드를 사용하는 Unity 게임은 상기한 특성으로부터 긍정적인 효과를 얻는 경향이 있습니다. 생성된 게임 프로젝트에서는 '마스터' 빌드만 .NET 네이티브를 컴파일합니다.

지시문

UWP 알림 메시지나 게임의 타일을 적용하려면 어떻게 해야 할까요? 이러한 기능은 Unity에서 개발할 때 사용한 Scripting Backend인 .NET 3.5에 포함되어 있지 않습니다. 이러한 경우, Visual Studio로 내보냈을 때는 코드가 잘 작동하는 것처럼 보이지만 Unity IDE에서는 그렇지 않을 것입니다.

이러한 문제를 해결하고자 Unity에서는 UnityEngine.WSA 를 제공하며, 여기에는 응용 프로그램, 커서, 시작 관리자, 타일, 알림과 같은 스텁 클래스가 포함됩니다. Unity C# 스크립트에서 이러한 형식에 대해 프로그램하여 Unity와 UWP 간의 차이점을 극복할 수 있습니다.

.NET 3.5에 누락된 기능을 관리하기 위한 두 번째 기술은 스크립트에서 NETFX_CORE 지시문을 사용하는 것입니다. 이 지시문은 .NET 3.5에서 컴파일하지 않지만 .NET Core에 대해 컴파일한 게임에서 필요한 코드 블록을 무시하는 데 사용됩니다. 다음은 Unity Bitbucket 리포지토리 에서 찾을 수 있는 예제로, Unity IDE에서 제대로 작동하지 않는 코드가 지시문을 사용함으로써 어떻게 무시될 수 있는지를 보여줍니다.

        
          #if NETFX_CORE
          async
          #endif
          void UpdateTile(byte[] png150x150)
          {
          #if NETFX_CORE
              // In order to change tile image, we should change the uri too
              // in this example we store images in applications local storage
              // we must also take care of cleaning it up
              StorageFolder localFolder = ApplicationData.Current.LocalFolder;
              StorageFolder tilesFolder = null;
              try
              {
                  tilesFolder = await localFolder.GetFolderAsync("tiles");
              }
              catch (Exception)
              { }
              if (tilesFolder != null)
                  await tilesFolder.DeleteAsync();
              tilesFolder = await localFolder.CreateFolderAsync("tiles");
              string tileFile = "tile" + counter++ + ".png";
              StorageFile file = await tilesFolder.CreateFileAsync(tileFile, CreationCollisionOption.ReplaceExisting);
              await FileIO.WriteBytesAsync(file, png150x150);

              string txt = textToTile ? text : "";
              Tile.main.Update("ms-appdata:///local/tiles/" + tileFile, "", "", txt);
          #endif
          }
        
      

조금 더 구체적으로 작업해야 할 때는 Unity_WSA_10_0 지시문으로 NETFX_CORE. 지시문을 대체합니다. 후자는 모든 Windows 스토어 앱에 대한 지시문이지만, Unity_WSA_10_0 은 특정한 Windows 10 장치에 대해서 사용됩니다.

플러그인 작성

플러그인 역시 .NET 3.5와 .NET Core 간의 차이에 영향을 받습니다. 물론, 코드가 호환되어 별다른 어려움이 없을 때도 있지만, 그렇지 않을 경우를 대비해 Unity에서는 동일한 플러그인을 2개의 다른 버전으로 사용하는 방식으로 앱을 구성할 수 있도록 해줍니다. 참고로 각각의 버전은 Unity IDE(.NET 3.5 API 기반)과 전체 게임(.NET Core에 대해 컴파일한 것)에 대한 것으로 구성됩니다.

복수의 플러그인을 구현하려면 특정한 규칙을 따라야 합니다. 모든 플러그인은 이름과 어셈블리 버전 번호가 동일해야 합니다. 다만, 각 플러그인은 별도의 폴더에 위치해야 합니다. 예를 들어, 에디터 호환 플러그인의 디렉터리가 ..\Assets\Plugins\MyPlugin.dll이라면, UWP 특정 플러그인의 디렉터리는 ..\Assets\Plugins\WSA\MyPlugin.winmd로 지정해야 합니다.

또한, 에디터용으로 작성한 플러그인 버전을 NET Core 플러그인의 자리 표시자로 구성하여, 어느 라이브러리가 스텁이며 어떤 것이 Windows 스토어에 배포될 라이브 버전인지 Unity에 알려주어야 합니다.

Unity 프로젝트 탐색기에서 Assets\Plugins\MyPlugin.dll를 선택하고 에디터를 플랫폼으로 설정하세요.

그런 다음, Assets\Plugins\WSA\MyPlugin.winmd으로 이동하여 Windows 스토어 앱을 해당 플러그인에 대한 올바른 플랫폼으로 선택합니다.

본 프로세스를 명확히 이해하는 데 도움이 되도록 실제로 플러그인 모음을 빌드해보겠습니다.

Visual Studio 2015를 열고 'MyPlugin'이라는 이름으로 새 프로젝트를 하나 만드세요. Visual C# | Windows | 유니버설 | Windows 런타임 구성 요소에 대한 프로젝트 템플릿을 사용합니다. (또한, 클래스 라이브러리 프로젝트 템플릿을 사용해도 됩니다. 하지만 Windows Runtime 구성 요소에는 몇 가지 흥미로운 기능이 있습니다. 예를 들어, 어떠한 Windows 런타임 언어 프로젝션에서든 소모성으로 작동하므로 추가적인 이점을 얻을 수 있습니다.)

솔루션을 우클릭하고 추가 -> 새 프로젝트를 선택합니다. 이것은 Unity 에디터에서만 사용되는 스텁 버전의 라이브러리가 됩니다. .NET 3.5에 대해서 컴파일되므로 Visual C# | Windows | 고전 바탕 화면 | 클래스 라이브러리 프로젝트 템플릿을 사용하여 만들어져야 힙니다. 같은 솔루션에서 같은 이름을 가진 두 프로젝트가 존재할 수 없으므로 이 프로젝트를 'MyPluginStub'으로 명명하겠습니다.

다만, 두 라이브러리의 이름이 동일해야 하므로 MyPluginStub의 출력 파일 이름이 다른 프로젝트와 같이 MyPlugin이 되도록 구성해야 합니다. 이렇게 하려면 솔루션 탐색기에서 MyPluginStub 프로젝트를 우클릭하고 속성을 선택합니다. 응용 프로그램 탭에서 어셈블리 이름 필드와 기본 네임스페이스 필드를 모두 MyPlugin 변경하여 다른 프로젝트와 일치시킵니다. 또한, 이 작업을 수행할 때는 대상 프레임워크 필드를 .NET Framework 3.5로 변경해야 합니다.

Visual Studio에서 각 프로젝트에 대해 생성한 Class1.cs 파일을 모두 삭제한 다음, MyPlugin Windows 런타임 구성 요소 프로젝트에 'Foo.cs'라는 이름으로 새 클래스를 만듭니다. Windows 데스크톱 프로젝트에 대해 유사한 클래스를 작성하는 대신, 여기서는 Foo.cs를 연결된 파일로 추가하여 공유할 것입니다.

이제 MyPlugin 프로젝트와 MyPluginStub 프로젝트 양쪽에서 동일한 실제 파일인 Foo.cs를 편집할 수 있습니다. 두 프로젝트의 코드 편집기에서 파일을 살펴보세요. MyPluginStub에서 해당 파일을 살펴볼 때 Visual Studio에서 System.Threading.Tasks 에 대해 사용 중인 문 주변에 빨간색 물결선을 표시한 것이 보일 것입니다. 이것은 해당 형식이 .NET Core에는 있지만, .NET Framework 3.5에 존재하지 않기 때문입니다.

해당하는 행을 실제로 사용할 일은 없으므로 삭제하여 오류를 수정해도 괜찮을 것입니다. 하지만 여기서는 대신 지시문을 테스트하여 그것이 작동하는 원리를 살펴보고자 합니다. 작업에 대해 사용 중인 문을 아래에 나오는 3행의 코드로 교체하세요.

        
          #if NETFX_CORE
            using System.Threading.Tasks;
          #endif
        
      

이 코드를 추가한 후에 프로젝트가 다시 한 번 컴파일을 수행할 것입니다. 하지만 여전히 Foo 클래스에 대한 메서드가 필요한데, 이 메서드를 Bar로 명명하는 것이 자연스러울 듯하군요. Bar는 Unity 에디터에서 호출될 때는 하나의 메시지, Windows 런타임 구성 요소 내에서 호출될 때는 다른 메시지를 반환해야 합니다. Foo 클래스에 대해 Bar 메서드를 구현한 다음 코드를 추가하세요. (이 작업을 수행하면서 '봉인된' 키워드를 클래스 선언에 추가하시기 바랍니다. 이 추가 작업은 런타임 구성 요소에서 요구합니다.)

        
          public sealed class Foo
            {
              public string Bar()
              {
                #if NETFX_CORE
                  return "Windows Store version of the plugin.";
                #endif
                  return "Unity Editor version of the plugin.";
              }
            }
        
      

두 라이브러리를 빌드합니다.

다음으로 Unity 프로젝트를 구성하여 이러한 라이브러리를 사용해야 합니다. Unity에서 프로젝트를 열고 에셋 아래에 Plugins라는 이름으로 새 폴더를 만듭니다. Plugins 아래에 WSA(Windows 스토어 애플리케이션의 약자)라는 이름의 다른 디렉터리를 생성합니다. MyPluginsStub 프로젝트에서 MyPlugins.dll 파일을 찾아 ..\Assets\Plugins로 끌어다 놓습니다. 다음으로 직접 컴파일한 MyPlugins.winmd를 찾아서 ..\Assets\Plugins\WSA로 끌어다 놓습니다.

에셋 창에서 Plugins\MyPlugin을 클릭합니다. 이렇게 하면 검사 창에 MyPlugin 가져오기 설정이 표시됩니다. '모든 플랫폼'을 선택 해제한 다음, 'Editor'를 선택합니다. 이 작업을 통해서 이것이 Unity 에디터에 있을 때 실행해야 할 라이브러리 버전임을 IDE에 알려주게 됩니다.

다음으로 한 단계 아래로 이동하여 Plugins\WSA\MyPlugin을 선택합니다. 검사 창에 이미 WSAPlayer가 선택되어 있을 것입니다(다른 플랫폼은 없음). 이를 통해 이것이 Windows 스토어에 게시하고자 하는 라이브러리 버전임을 Unity에 알려주게 됩니다. 자리 표시자 필드로 내려가서 Plugins 폴더의 최상위에서 스텁 라이브러리를 찾으세요. 이렇게 하여 두 라이브러리 간의 관계를 설명할 수 있습니다. Plugins\MyPlugin.dll은 실제 라이브러리인 Plugins\WSA\MyPlugin.winmd에 대한 자리 표시자입니다.

이제 두 라이브러리를 테스트하여 Unity에 올바르게 구성되었는지 확인합니다. Unity에 'TestFooBar'라는 이름으로 새 C# 스크립트를 만드세요. Foo 클래스의 비공개 인스턴스를 하나 만들고 로거에 Bar의 반환값을 작성합니다.

        
          using UnityEngine;
          using System.Collections;
          using MyPlugin;

          public class TestFooBar : MonoBehaviour {

            private Foo testFoo = new Foo();
             // Use this for initialization
               void Start () {
                  Debug.Log(testFoo.Bar());
                }

            // Update is called once per frame
              void Update () {

              }
            }
        
      

마지막으로, 이 스크립트를 게임 오브젝트(예: Player) 중 하나로 끌어다 놓고 부착합니다. 이렇게 하면 해당 스크립트의 시작 메서드가 호출됩니다. Unity에서 게임을 실행해보세요. 모든 것이 계획대로 진행되었다면 콘솔 창에 올바른 메시지가 출력될 것입니다.

마지막으로, Build Settings 로 이동한 뒤, Build 버튼을 클릭하여 프로젝트를 Visual Studio로 내보냅니다.

이번에는 Visual Studio에서 게임을 실행하세요. Visual Studio 결과창에 다음 메시지가 나타날 것입니다.

이 플러그인은 UWP(유니버설 Windows 플랫폼)과 Unity 간에 일어나는 상호작용 대부분의 기본입니다. 콘솔 창에 올바른 메시지가 출력되게 하는 데 성공했다면 UWP 코드를 캡슐화하고 Unity 게임에서 해당 코드에 액세스하기 위해 알아두어야 할 사항 대부분을 습득했다고 봐도 좋습니다.

광고

Microsoft Ads를 Unity 플러그인으로 실행할 수 있습니다. 이렇게 하려면 Windows 스토어 및 Azure 서비스를 위한 Unity 플러그인을 다운로드 및 설치하세요. 또한, 플러그인에는 앱 내 구매, 라이선스 확인 및 영수증 검증을 위한 API가 포함됩니다.

Windows 스토어용으로 Unity 플러그인을 사용하는 가장 쉬운 방법은 GitHub에서 Unity 패키지를 다운로드한 뒤, Unity 에디터에서 Assets | Import Package | Custom Packages 를 사용하여 해당 패키지를 앱으로 가져오는 것입니다. 패키지 가져오기가 완료되면 Unity Plugins 폴더와 Unity Plugins\WSA 폴더에 올바른 바이너리가 저장되어 있을 것입니다.

이외에도 내보낸 UWP 앱에서 최신 Microsoft 스토어 참여 및 수익 창출 SDK 확장을 사용하여 배너 광고와 동영상 중간 광고를 출력하는 방법도 있습니다. Microsoft 스토어 참여 및 수익 창출 SDK는 Microsoft 유니버설 광고 클라이언트 SDK의 광고 기능과 스토어 서비스와 관련된 기타 기능을 단일 통합 설치 관리자로 묶은 것입니다.

애널리틱스

플레이어에 대한 통계 수집은 Unity 플랫폼 또는 UWP(유니버설 Windows 플랫폼) 중 어느 쪽을 통해서도 가능합니다. 또한, 두 플랫폼을 모두 선택하여 상호보완적인 데이터를 수집할 수도 있습니다. Unity를 통해 수집하려면 프로젝트를 Unity 서비스 ID에 연결하여 해당 프로젝트에 대한 통계를 활성화해야 합니다. 더 자세한 내용은 Unity 설명서를 참조하세요.

게임 배포가 완료되면 데이터가 Windows 개발자 센터 대시보드로 자동 수집됩니다. 대시보드에서는 다음 내용에 대한 최신 보고서를 지속적으로 제공합니다.

  • 구입
  • 상태
  • 평점
  • 리뷰
  • 피드백
  • 사용량
  • IAP 구입
  • 광고 조정
  • 광고 성과
  • 앱 설치 광고
  • 채널 및 변환

이 서비스가 활성화되면 게임에 대한 사용량 원격 분석을 이용할 수 있게 됩니다.

마지막으로 REST API를 사용하여 Windows 개발 센터로 이동할 필요 없이, 가장 유용한 방법으로 이러한 분석을 확인할 수도 있습니다.

앱 내 구매(IAP)

UWP(유니버설 Windows 플랫폼)으로 내보낸 Unity 게임은 두 개의 플랫폼, 즉 Unity와 UWP에 연관되어 있으므로 앱 내 구매를 사용하는 데 다음과 같은 두 가지 선택지가 있습니다: Unity IAP 또는 Windows 스토어 및 Azure 서비스를 위한 Unity 플러그인을 다운로드 및 설치하세요.

Unity IAP를 사용하려면 Unity의 서비스 창에서 Unity 서비스 프로젝트 ID를 설정해야 합니다. 이렇게 하면 Windows 스토어용으로 IAP를 활성화하기 위한 일련의 대화 상자가 나타납니다. 더 자세한 내용 은 Unity 웹 사이트를 참조하세요. 주의: Unity IAP는 IL2CPP 스크립팅 백엔드와 함께 작동하지 않습니다.

Windows 스토어용 Unity 플러그인의 경우에는 상점 API를 사용하여 Unity 스크립트 파일 내부에서 목록을 가져올 수 있습니다. 먼저, Windows 스토어 개발 센터를 통해서 귀하의 앱에 대한 앱 내 상품을 만들어야 합니다. 이렇게 하면 앱을 업데이트하여 IAP 항목을 목록으로 보여주고 구매를 허용할 수 있습니다. 플러그인을 통해서 만들어진 핵심 호출을 사용하려면 아래 표본 코드에 나타난 것처럼 앱 내 상품을 가져오기 위한 LoadListingInformation 메서드를 적용해야 합니다.

        
          Store.LoadListingInformation((response) =>
          {
            if (response.Status == CallbackStatus.Failure)
              {
                prettyPrintErrors("LoadListingInformation", response);
                return;
              }

            prettyPrintSuccess("LoadListingInformation", response);
            text.text = "\nFinished Loading Listing Information" + text.text + "\n";
            Debug.Log(response.Result.Description.ToString());
            foreach (var productListingKey in response.Result.ProductListings.Keys)
              {
                Debug.Log("Key: " + productListingKey + " value: " + response.Result.ProductListings[productListingKey].Name);
              }
          });
        
      

상점 API 사용 방법을 알려주는 구현 표본의 전체 내용은 GitHub에서 찾을 수 있습니다.

모범 사례

게임의 핵심적인 요소가 완성되면 Windows 10 장치 제품군에서 앱이 제대로 작동할 수 있도록 몇 가지 마무리 작업을 수행해야 합니다. 이 섹션에서는 Windows 스토어로의 배포를 간편하게 해줄 모범 사례 몇 가지를 알아봅니다.

스플래시 화면 및 로딩 진행 상황

게임이 시작되면 진행 상황 표시기를 출력하여 게임이 멈추거나 문제가 발생하지 않았음을 사용자에게 알려주는 것이 중요합니다.

여기서는 여러분이 XAML 프로젝트를 사용 중이라고 가정해보겠습니다. 실제로 그렇지 않더라도 여기에서 다루는 개념 대부분은 DirectX 프로젝트에 그대로 적용됩니다. 다만, 구현은 상당히 다를 것입니다.

Unity를 사용하여 개발한 Windows 스토어용 게임의 로딩 화면은 두 가지 핵심 단계로 구성됩니다.

  1. 앱 스플래시 화면
  2. 확장형 스플래시 콘텐츠

기본 스플래시 화면 이미지는 OS에서 보여주며, 다음과 같이 응용 프로그램 매니페스트를 업데이트하여 구성해줄 수 있습니다.

Windows는 Unity 장면을 관리할 페이지(XAML 마크업으로 작성)를 OS를 통해 불러오는 중에만 기본 앱 스플래시 화면을 보여줍니다.

Unity 장면은 대체로 불러오는 데 시간이 더 많이 걸립니다. 따라서, XAML를 사용하여 Unity 장면을 불러오는 동안 상단에 진행 상황 표시기가 있는 동일한 스플래시 이미지를 사용자에게 다시 보여주는 식으로 확장형 스플래시 콘텐츠를 만드는 것이 좋습니다. MainPage.xaml에서 스플래시 화면 이미지와 함께 진행 상황 막대를 추가합니다.

        
          <SwapChainPanel x:Name="DXSwapChainPanel">
            <Grid x:Name="ExtendedSplashGrid" Background="#222C37">
              <Image x:Name="ExtendedSplashImage" Source="Assets/SplashScreen.png" 
                VerticalAlignment="Center" HorizontalAlignment="Center"/>
              <ProgressBar x:Name="SplashProgress" Foreground="#FFFFFFFF" 
                Background="#FF333333" Maximum="10000" Width="320" Height="25"/>
            </Grid>
          </SwapChainPanel>
        
      

XAML UI에 대한 코드 숨김 파일인 MainPage.xaml.cs에서는 생성자를 사용하여 진행 상황 막대를 움직이는 타이머를 시작하고 사용자에게 시각적인 피드백을 제공합니다.

장치 폼 팩터

수많은 폼 팩터를 아우르는 하나의 코드 베이스는 UWP(유니버설 Windows 플랫폼)의 핵심적인 기능이지만, 게임의 경우에는 특정 폼 팩터에 대하여 몇 가지 마무리 및 최적화가 필요할 수 있습니다. 여기에는 대체로 입력 메커니즘(예: 터치, 키보드, 마우스, 게임 패드), 창 크기 조절, 리소스 및 에셋 최적화, 각 특정 폼 팩터와의 네이티브 플랫폼 통합 구현 등이 포함됩니다.

화면 방향 지원

신규 장치 대부분에서는 와이드스크린 비율을 채용하고 있으므로 Unity 에디터에서는 화면 방향이 가로로 기본 설정된 프로젝트를 내보냅니다. 세로 방향을 지원하는 게임이라면 Visual Studio에서 앱 매니페스트를 변경해야 합니다. Unity 에디터에서는 이 작업이 불가능합니다.

매니페스트를 변경하려면 Package.appxmanifest 파일을 두 번 클릭하세요. 이 파일은 Windows 스토어 Visual Studio 프로젝트의 최상위 단계에서 찾을 수 있습니다. 매니페스트 편집기에서 지원할 화면 방향을 선택합니다.

화면 방향 API (Input.deviceOrientation 및 Screen.orientation) 는 Unity 내부에서 잘 작동합니다. 이러한 API를 사용하여 장치의 화면 방향을 쿼리하며, 심지어는 특정 장면에 대한 화면 방향을 설정할 수도 있습니다.

창 크기 조절 지원

UWP(유니버설 Windows 플랫폼) 앱은 Windows 8 및 8.1에서와 마찬가지로 전체 화면 대신 크기 조절이 가능한 창에서 구동됩니다. 따라서 창 크기 조절은 게임 및 응용 프로그램에서 고려해야 할 사항이 되었습니다.

Unity 개발자 여러분은 이러한 차이점을 명확하게 알 수 있을 것입니다. Screen.height 및 Screen.width 속성을 통하여 사용 가능한 공간이 네이티브(픽셀) 크기로 제공되기 때문입니다.

사용자가 창 크기를 변경할 때 게임을 일시적으로 중지하여 다음에 할 일을 결정할 수 있게 해주는 것이 일반적으로 권장되는 방법입니다. 여러 창이 동시에 열릴 수 있는 데스크톱 모드에서는 창이 초점을 잃을 수 있으므로 초점 변경을 처리하고 게임 창이 초점을 잃었을 때 게임을 일시 중지해주어야 합니다.

게임 일시 중지 및 재개

Unity 게임 엔진은 일반적으로 Windows에서 게임이 초점을 잃을 때 자동으로 일시 중지 및 일시 중지 해제를 수행합니다. 자동적인 응용 프로그램 일시 중단 이외에 게임을 일시적으로 중지해야 할 경우(예: XAML 페이지 간 이동)에는 UnityPause 메서드를 호출하면 됩니다.

응용 프로그램이 일시 중지되기 직전에 추가적인 작업을 수행해야 한다면 대신 스크립트 내부의 OnApplicationPause 콜백 함수를 사용하세요.

게임 패드 및 마우스 입력

Windows 장치 제품군은 키보드와 마우스, 터치부터 게임 패드까지 폭넓은 입력 방법을 지원합니다. 다행히도 이러한 입력 모드 전반은 Unity에서 잘 지원되는 것은 물론, Unity 인풋 매니저를 통한 추상화 역시 문제없이 수행됩니다.

다음은 우리가 만드는 농구 게임에 등장하는 슈터의 행동입니다. 여기서 우리는 게임이 공을 던지도록 하기 전에 'Fire1' 입력축이 발사되기를 기다리고 있습니다.

        
          void Update()
            {
              if (Input.GetButtonDown("Fire1"))
              {
                var instance = (Rigidbody)Instantiate(this.prefab, transform.position 
                        + (transform.forward * 1.05f), transform.rotation);
                instance.velocity = (transform.forward + transform.up / 2) * this.speed;
              }
            }
        
      

사실 'Fire1'은 아래에서 보듯이 인풋 매니저 내에서 마우스 왼쪽 단추와 게임 패드/조이스틱 버튼에 기본적으로 매핑되어 있습니다. Unity IDE에서 인풋 매니저를 확인하려면 Edit -> Project Settings -> Input 순으로 선택하세요.

Xbox One 컨트롤러에서는 'Fire1'이 매핑된 'joystick button 0'이 A 버튼입니다. 또한, 이동과 점프에 대해 FPSController 컴포넌트에 사전 매핑된 입력도 있습니다. 마우스 움직임, 키보드의 상/하/좌/우/a/d/s/w 키 및 Xbox One 컨트롤러의 왼쪽 조이스틱은 모두 기본적으로 선수를 움직입니다. 마우스 오른쪽 단추, 스페이스 바, Xbox B 버튼은 모두 선수를 점프하게 합니다.

또한, 축에 입력을 다시 매핑히거나 심지어는 축을 추가하여 입력을 사용자 정의하고 이를 통해 사용자 정의 환경을 구현하여 게임을 지원할 수 있습니다. 자세한 내용은 Unity 설명서의 가상 축 항목을 참조하세요.

마무리

이 문서에서는 게임을 구성하고 Unity에서 Visual Studio의 UWP(유니버설 Windows 플랫폼) 프로젝트로 게임을 내보내는 방법을 알아보았습니다. 또한, UWP 게임을 Windows 스토어에 제출하는 방법도 다루었습니다. Unity 플랫폼과 유니버설 Windows 플랫폼 사이에 존재하는 몇 가지 미묘한 차이점 외에 게임 개발자로서 알아두어야 할 플랫폼 특정 코드 및 기능에 관해서도 살펴보았습니다. 또한, 이 문서의 말미에서는 게시 준비를 위해 게임을 마무리하는 방법에 대한 모범 사례를 알아보았습니다.

참조

맨 위로 이동
확인

당사에서는 웹 사이트의 모든 기능을 최대로 이용할 수 있도록 쿠키를 사용합니다. 자세한 정보는 여기를 클릭하세요.