Unity 기반의 게임을 개발할 때 Com2uS 개별모듈을 포팅하는 방법과 Android 혹은 iOS 앱으로 빌드하는 방법을 안내합니다.
포팅하기
Unity 개발 환경을 이용한다면 Com2uS 개별모듈을 플러그인의 형태로 Unity 개발 환경에 포팅해 주세요. 다음의 안내대로 개별모듈을 개발 환경에 추가하고 필요한 설정 작업과 코드 작업을 수행하세요.
- 개발 환경에 플러그인 추가하기
- 일반 설정하기
- 외부 라이브러리 추가하기
- 외부 라이브러리 의존성 추가하기
- 개별모듈 UI 노출 코드 추가하기
개발 환경에 플러그인 추가하기
여러분의 게임 프로젝트를 Unity 개발 환경에서 열고, Assets > Import Package > Custom Package 메뉴에서 Plugin Package를 선택한 후 Hive 개발자 사이트에서 다운로드한 Unity용 Com2uS 개별모듈을 선택하여 추가하세요.
개별모듈이 정상적으로 추가되면 Unity 개발 환경 프로젝트 창에서 Com2uS 개별모듈 파일을 볼 수 있습니다.
일반 설정하기
Android 앱과 iOS 앱의 설정 방법이 다릅니다. 다음 안내를 확인해 보세요.
Android
- File > Build Settings…를 클릭하세요. Build Settings 창이 나타납니다. Platform 목록에서 Android를 선택하세요.
- Switch Platform을 버튼을 클릭하세요. 플랫폼 스위치 과정이 진행됩니다.
- 플랫폼 스위치 과정이 완료되면 Build Settings 창에서 Player Settings… 버튼을 클릭하세요.
- Inspector 창의 Other Settings 섹션에서:
- Bundle Identifier 필드에 게임의 AppID를 입력하세요. 게임 AppID를 모른다면 선행 작업 섹션을 읽어 보세요.
- Minimum API Level을 API Level 15이상으로 설정하세요.
- Inspector 창의 Publish Settings 섹션에서 Signing Key를 설정하세요.
iOS
- File > Build Settings…를 클릭하세요. Build Settings 창이 나타납니다. Platform 목록에서 iOS를 선택하세요.
- Switch Platform 버튼을 클릭하세요. 플랫폼 스위치 과정이 진행됩니다.
- 플랫폼 스위치 과정이 완료되면 Build Settings 창에서 Player Settings… 버튼을 클릭하세요. Inspector 창이 나타납니다.
- Inspector 창에서:
- Bundle Identifier 필드에 발급 받은 게임의 AppID를 입력하세요. 게임 AppID를 모른다면 선행 작업 섹션을 읽어 보세요.
- Hive SDK가 지원하는 최소 iOS 버전대로 Target minimum iOS version을 설정하세요. Hive가 지원하는 최소 iOS버전은 9.0으로, Target Minimum iOS version 값을 9.0 이상으로 설정하세요.
외부 라이브러리 추가하기
Hive SDK는 UnityPackage 버전에 External-Dependency-Manager for Unity(구. GooglePlayServiceReolver, 이하 EDM4U) 패키지를 포함하여 배포하며, EDM4U 설정으로 빌드에 필요한 라이브러리를 자동 설치/배포하도록 구성되어 있습니다. EDM4U가 동작할 수 있는 빌드 환경이 마련되지 않았다면 이를 구축해야 합니다. EDM4U에서 제공하는 GUI를 이용하거나 Unix 셸인 Bash, 다시 말해 명령줄 인터페이스(CLI, Command Line Interface)를 통해서도 가능합니다.
Android
- Unity를 실행해 Asset > External Dependency Manager > Android Resolver > Settings 메뉴를 클릭합니다.
- Android Resolver Settings 창이 나타나면 빨간색으로 표시한 항목을 기본 설정으로 체크 표시합니다.
iOS
- CocoaPods 설치
- CocoaPods 설정
CocoaPods으로 iOS에서 사용하는 외부 라이브러리를 제공받을 경우 기존 .xcodeproj 파일의 확장자를 .xcworkspace로 변경해 제공합니다. .xcworkspace 형태로 빌드를 진행할 수 없다면 GUI를 이용해 설정을 변경해보세요. 빌드할 PC의 Unity에서 수행하는 CocoaPods 적용 방식이 변경되어 실행할 수 있습니다.
C2S 개별모듈 및 외부 라이브러리 의존성 추가하기
아래와 같이, SDK C2S 버전에 따른 외부 라이브러리 의존성 추가하기 방법을 참고하세요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
<!-- C2S.20.1.3 기준으로 작성되었습니다. --> <dependencies> <androidPackages> <repositories> <repository>https://repo.maven.apache.org/maven2</repository> </repositories> <androidPackage spec="androidx.appcompat:appcompat:1.4.0-alpha01"> <androidSdkPackageIds> <androidSdkPackageId>extra-google-m2repository</androidSdkPackageId> </androidSdkPackageIds> </androidPackage> <androidPackage spec="androidx.cardview:cardview:1.0.0"> <androidSdkPackageIds> <androidSdkPackageId>extra-google-m2repository</androidSdkPackageId> </androidSdkPackageIds> </androidPackage> <androidPackage spec="androidx.browser:browser:1.0.0"> <androidSdkPackageIds> <androidSdkPackageId>extra-google-m2repository</androidSdkPackageId> </androidSdkPackageIds> </androidPackage> <androidPackage spec="androidx.annotation:annotation:1.0.0"> <androidSdkPackageIds> <androidSdkPackageId>extra-google-m2repository</androidSdkPackageId> </androidSdkPackageIds> </androidPackage> <androidPackage spec="androidx.constraintlayout:constraintlayout:2.1.1"> <androidSdkPackageIds> <androidSdkPackageId>extra-google-m2repository</androidSdkPackageId> </androidSdkPackageIds> </androidPackage> <androidPackage spec="androidx.localbroadcastmanager:localbroadcastmanager:1.0.0"> <androidSdkPackageIds> <androidSdkPackageId>extra-google-m2repository</androidSdkPackageId> </androidSdkPackageIds> </androidPackage> <androidPackage spec="androidx.fragment:fragment:1.0.0"> <androidSdkPackageIds> <androidSdkPackageId>extra-google-m2repository</androidSdkPackageId> </androidSdkPackageIds> </androidPackage> <androidPackage spec="androidx.vectordrawable:vectordrawable:1.0.0"> <androidSdkPackageIds> <androidSdkPackageId>extra-google-m2repository</androidSdkPackageId> </androidSdkPackageIds> </androidPackage> <androidPackage spec="androidx.vectordrawable:vectordrawable-animated:1.0.0"> <androidSdkPackageIds> <androidSdkPackageId>extra-google-m2repository</androidSdkPackageId> </androidSdkPackageIds> </androidPackage> <androidPackage spec="org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.5.10"> <androidSdkPackageIds> <androidSdkPackageId>extra-google-m2repository</androidSdkPackageId> </androidSdkPackageIds> </androidPackage> <androidPackage spec="org.jetbrains.kotlin:kotlin-reflect:1.5.10"> <androidSdkPackageIds> <androidSdkPackageId>extra-google-m2repository</androidSdkPackageId> </androidSdkPackageIds> </androidPackage> <androidPackage spec="org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.3"> <androidSdkPackageIds> <androidSdkPackageId>extra-google-m2repository</androidSdkPackageId> </androidSdkPackageIds> </androidPackage> <androidPackage spec="org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.3"> <androidSdkPackageIds> <androidSdkPackageId>extra-google-m2repository</androidSdkPackageId> </androidSdkPackageIds> </androidPackage> <androidPackage spec="androidx.core:core:1.3.2"/> <androidPackage spec="com.google.android.play:review:2.0.0"/> <androidPackage spec="com.android.installreferrer:installreferrer:2.2"/> <androidPackage spec="com.android.billingclient:billing-ktx:5.0.0"/> <androidPackage spec="com.github.bumptech.glide:glide:4.13.0"/> <androidPackage spec="androidx.recyclerview:recyclerview:1.2.0-alpha05"/> <androidPackage spec="com.amazon.device:amazon-appstore-sdk:3.0.2"/> <androidPackage spec="com.facebook.android:facebook-core:13.0.0"/> <androidPackage spec="com.facebook.android:facebook-common:13.0.0"/> <androidPackage spec="com.facebook.android:facebook-login:13.0.0"/> <androidPackage spec="com.facebook.android:facebook-share:13.0.0"/> <!-- C2S Module(Hive SDK) with Maven --> <!-- C2S.20.1.3 이후 Android에서는 Hive 관련 aar 라이브러리 파일없이 maven으로 불러오기하여 사용합니다.--> <androidPackage spec="com.com2us.android.hive:hive-sdk:4.16.1.3" /> <androidPackage spec="com.com2us.android.hive:hive-service-extension-facebook:4.16.1.3" /> <androidPackage spec="com.com2us.android.hive:hive-service-extension-google:4.16.1.3" /> </androidPackages> <iosPods> <iosPod name="FBSDKCoreKit" version="13.2.0" bitcodeEnabled="true" minTargetSdk="11.0" /> <iosPod name="FBSDKLoginKit" version="13.2.0" bitcodeEnabled="true" minTargetSdk="11.0" /> <iosPod name="FBSDKShareKit" version="13.2.0" bitcodeEnabled="true" minTargetSdk="11.0" /> <iosPod name="FBSDKGamingServicesKit" version="13.2.0" bitcodeEnabled="true" minTargetSdk="11.0" /> <iosPod name="GoogleSignIn" version="6.1.0" bitcodeEnabled="true" minTargetSdk="9.0" /> <iosPod name="SDWebImage" version="5.12.5" bitcodeEnabled="true" minTargetSdk="9.0" /> </iosPods> </dependencies> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<!-- C2S 23.2.2 기준으로 작성되었습니다. --> <dependencies> <androidPackages> <repositories> <repository>https://repo.maven.apache.org/maven2</repository> </repositories> <!-- Hive SDK with Maven --> <androidPackage spec="com.com2us.android.hive:hive-sdk:23.2.2" /> <androidPackage spec="com.com2us.android.hive:hive-authv4-provider-facebook:23.2.2" /> <androidPackage spec="com.com2us.android.hive:hive-authv4-provider-google-signin:23.2.2" /> <androidPackage spec="com.com2us.android.hive:hive-authv4-provider-hive-membership:23.2.2" /> <!-- 이하 필요한 Hive 라이브러리 추가 --> </androidPackages> <iosPods> <iosPod name="HiveAuthV4ProviderAppleGameCenter" version="23.2.2"/> <iosPod name="HiveAuthV4ProviderGoogle" version="23.2.2"/> <!-- 이하 필요한 Hive Pod 설정 추가 --> </iosPods> </dependencies> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
<!-- C2S 23.2.2 기준으로 작성되었습니다. --> <dependencies> <androidPackages> <repositories> <repository>https://repo.maven.apache.org/maven2</repository> <repository>https://jcenter.bintray.com</repository> <repository>https://repo.onestore.co.kr/repository/onestore-sdk-public</repository> <!-- OneStore 사용 시 --> <repository>https://developer.huawei.com/repo/</repository> <!-- Huawei 사용 시 --> </repositories> <!-- Hive SDK with Maven --> <!-- HiveMain --> <androidPackage spec="com.com2us.android.hive:hive-sdk:23.2.2" /> <androidPackage spec="com.com2us.android.hive:hive-plugin-c2s:23.2.2" /> <!-- Hercules --> <androidPackage spec="com.com2us.android.hive:hive-hercules:23.2.2" /> <!-- HiveModule --> <androidPackage spec="com.com2us.android.hive:hive-promotion:23.2.2" /> <!-- Idp --> <androidPackage spec="com.com2us.android.hive:hive-authv4-provider-hive-membership:23.2.2" /> <androidPackage spec="com.com2us.android.hive:hive-authv4-provider-google-signin:23.2.2" /> <androidPackage spec="com.com2us.android.hive:hive-authv4-provider-google-playgames:23.2.2" /> <!-- Google Play Games on PC 사용 시 --> <androidPackage spec="com.com2us.android.hive:hive-authv4-provider-facebook:23.2.2" /> <androidPackage spec="com.com2us.android.hive:hive-authv4-provider-wechat:23.2.2" /> <!-- Wechat 로그인 사용 시 --> <androidPackage spec="com.com2us.android.hive:hive-authv4-provider-huawei:23.2.2" /> <!-- Huawei 로그인 사용 시 --> <!-- Iap --> <androidPackage spec="com.com2us.android.hive:hive-iapv4-repayment:23.2.2"/> <androidPackage spec="com.com2us.android.hive:hive-iapv4-market-google:23.2.2" /> <androidPackage spec="com.com2us.android.hive:hive-iapv4-market-amazon:23.2.2" /> <!-- Amazon AppStore 지원 시 --> <androidPackage spec="com.com2us.android.hive:hive-iapv4-market-lebi:23.2.2" /> <!-- Lebi 지원 시 --> <androidPackage spec="com.com2us.android.hive:hive-iapv4-market-onestore:23.2.2" /> <!-- OneStore 지원 시 --> <androidPackage spec="com.com2us.android.hive:hive-iapv4-market-samsung:23.2.2" /> <!-- Samsung GalaxyStore 지원 시 --> <androidPackage spec="com.com2us.android.hive:hive-iapv4-market-huawei:23.2.2" /> <!-- Huawei AppGallery 지원 시 --> <!-- Push --> <androidPackage spec="com.com2us.android.hive:hive-push-google-fcm:23.2.2" /> <androidPackage spec="com.com2us.android.hive:hive-push-amazon-adm:23.2.2" /> <!-- Amazon Push 지원 시 --> <!-- etc. --> <androidPackage spec="com.com2us.android.hive:youtube-helper:1.0.1" /> <!-- 프로모션 Youtube 동영상 배너 사용 시 --> <androidPackage spec="com.android.installreferrer:installreferrer:2.2" /> <!-- 이하 게임 프로젝트에서 자체적으로 사용하는 라이브러리 추가 --> </androidPackages> <iosPods> <sources> <source>https://github.com/Com2uSPlatformCorp/HiveSDK-iOS.git</source> </sources> <!-- HiveMain --> <iosPod name="HiveSDKUnityPluginC2S" version="23.2.2"/> <!-- HiveModule --> <iosPod name="HivePromotion" version="23.2.2"/> <!-- Hercules --> <iosPod name="Hercules" version="23.2.2"/> <iosPod name="HiveAuthV4ProviderAppleGameCenter" version="23.2.2"/> <iosPod name="HiveAuthV4ProviderGoogle" version="23.2.2"/> <!-- Idp --> <iosPod name="HiveAuthV4ProviderHive" version="23.2.2"/> <iosPod name="HiveAuthV4ProviderAppleSignIn" version="23.2.2"/> <iosPod name="HiveAuthV4ProviderFacebook" version="23.2.2"/> <iosPod name="HiveAuthV4ProviderGoogle" version="23.2.2"/> <iosPod name="HiveAuthV4ProviderQQ" version="23.2.2"/> <!-- Iap --> <iosPod name="HiveIAPV4" version="23.2.2"/> <!-- 이하 게임 프로젝트에서 자체적으로 사용하는 Pod 추가 --> </iosPods> </dependencies> |
Android UnityPlayerActivity 설정하기
C2S 개별모듈의 Unity 패키지에 /HiveSDK/Plugins/Android/UnityPlayerActivity.java를 사용하여 C2S 개별모듈 생명주기 코드가 사용된 Activity
클래스를 사용할 수 있습니다. 다만, 사용중인 Unity 버전에 따라 UnityPlayerActivity 관련 코드 수정이 필요합니다. 아래 내용을 참고 바랍니다.
- Unity 2021
- 3.34f1 미만: 별도 수정 없음
- 3.34f1 이상: 관련 코드 수정 필요
- Unity 2022
- 3.16f1 미만: 별도 수정 없음
- 3.16f1 이상: 관련 코드 수정 필요
다음은 코드 수정 방법입니다.
- UnityPlayerActivity.java 수정
- 해당 파일을 HiveUnityPlayerActivity.java 로 변경합니다.
- 해당 파일의 코드에서 클래스 명을 변경합니다.
- AndroidManifest 수정
- /Plugins/Android/AndroidManifest.xml에서 UnityPlayerActivity의 사용처가 선언되어 있다면 클래스 이름을 변경합니다.
1 2 3 4 5 6 7 8 |
... (생략) ... //public class UnityPlayerActivity extends com.unity3d.player.UnityPlayerActivity (HiveUnityPlayerActivity로 클래스명 변경) public class HiveUnityPlayerActivity extends com.unity3d.player.UnityPlayerActivity { ... (생략) ... |
1 2 3 4 5 6 7 8 |
... (생략) ... <!-- <activity android:name="com.hive.UnityPlayerActivity" ... --><!-- (HiveUnityPlayerActivity로 클래스명 변경) --> <activity android:name="com.hive.HiveUnityPlayerActivity" ... /> ... (생략) ... |
Android UnityPlayerGameActivity 설정하기
개발 환경이 C2S 24.1.0 이상이고 Unity 2023.2.x 이상인 경우, C2S 개별모듈 Unity 패키지에 /HiveSDK/Plugins/Android/HiveUnityPlayerGameActivity.java를 사용하여 C2S 개별모듈 생명 주기 코드가 사용된 Activity 클래스를 사용할 수 있습니다.
다음은 HiveUnityPlayerGameActivity 사용을 위한 설정 방법입니다.
- Unity 프로젝트에서 Project Settings > Other Settings 이동합니다.
- Application Entry Point 에서 ‘GameActivity’ 활성화합니다. 만약, 기존 HiveUnityPlayerActivity를 사용할 경우 ‘Activity’를 활성화합니다.
개별모듈 UI 노출 코드 추가하기
Xcode 프로젝트에서 UnityAppController.m 파일에 아래 코드를 추가하세요.
1 2 3 4 5 6 7 8 9 |
#include "C2SActiveUser.h" extern "C" { void CS_SetModuleView() { CS_UserAgreeSetView((void*)UnityGetGLView()); } }; |
빌드하기
Unity 개발 환경을 이용한다면 OS별로 다음 안내에 따라 빌드해주세요.
Android 빌드하기
Unity 개발 환경에서 Android용 앱을 빌드하려면 다음의 안내 중 하나를 선택하여 수행하세요.
- Build Settings 창 이용하기
- 바로 빌드하기: File > Build Run을 선택하세요.
Google Android Project Export용 빌드하기
Unity 개발 환경에서 개발한 프로젝트를 Google Android 프로젝트로 추출하려면 다음의 안내를 따라 수행하세요.
- File > Build Settings > Player Settings…를 선택하세요. Inspector 창이 나타납니다.
- Inspector 창의 Other Settings 섹션 아래 Bundle Identifier 값을 AppID와 동일한 값으로 입력하세요.
- Unity 개발 환경 버전에 따라 다음과 같이 수행하세요.
- Unity 5.5 이상
- Unity 5.5 미만
- Android Studio를 실행시키고, Import project (Eclipse ADT, Gradle, etc.) 옵션을 선택하세요.
- Unity3D Android 프로젝트 경로를 선택하여 추출한 프로젝트를 불러오기(import)하세요.
Android Studio 설정에 대한 자세한 안내는 Android Studio 가이드에서 확인하세요.
iOS 빌드하기
iOS용 앱을 빌드하려면 다음의 안내를 따르세요:
- Unity 개발 환경에서 File > Build Settings…를 클릭하세요. Build Settings 화면이 나타납니다.
- Platform 목록에서 iOS를 클릭하세요.
- Build 버튼을 클릭하여 Xcode 프로젝트를 생성하세요.
- 1-3번 단계에서 생성한 프로젝트를 Xcode에서 여세요.
- Xcode에서 Build Settings 탭을 선택한 후 bitcode를 검색하세요. 검색 결과로 나온 Enable Bitcode 옵션을 No로 선택하세요.
Unity 2019.3+ 버전 빌드 시 확인사항
- Unity 2019.3 이상 버전에서 iOS 빌드 시 Xcode Target은 Unity-iPhone Target과 UnityFramework Target으로 분리되고, 모든 Framework들은 UnityFramework Target으로 자동 설정됩니다.
- 모든 Resource 파일은 Main Target인 Unity-iPhone을 바라보고 있어야 하므로 자동 세팅된 SDK 리소스 파일을 Unity-iPhone Target으로 변경해 줘야 합니다.
- Framework 추가는 UnityFramework Target에서 진행해야 합니다.
- Dummy Swift 파일을 추가하는 경우에는 Target Membership에서 Unity-iPhone과 UnityFramework를 모두 선택하여 Swift 설정을 추가해야 합니다.