UNITY

Quick Start

최신 버전 다운로드

1. 프로젝트 설정

NaverGame SDK를 사용하려면 Unity에서 다음과 같이 개발 환경을 설정합니다.

  • Unity의 메뉴에서 Asset > Import package를 클릭한 다음 Custom Package 대화 상자에서 다운로드한 NaverGameSDK-x.x.x.unityPackage 파일을 선택한다.

  • Unity의 메뉴에서 Asset > Import package를 클릭한 다음 Custom Package 대화 상자에서 다운로드한 NaverGameSDK-x.x.x.unityPackage 파일을 선택합니다.

  • Custom Package 대화 상자에서 Import를 클릭하면 NGSDK 폴더와 Plugins 폴더가 생성됩니다.

  • NGSDK폴더의 Sample 폴더에 있는 SampleScene 파일에는 기본실행 버튼이 포함되어있습니다. Unity 버전이 상이할 경우 SampleScene이 정상적으로 로딩되지 않을 수 있습니다. 이 경우 다음 가이드를 참조하여 새로운 UI를 구성해 주시기 바랍니다.

Canvas에 버튼 생성하기

  • GameObject > UI > Canvas 를 클릭하여 UGUI Canvas 를 생성합니다.

  • NGSDK 폴더의 Sample 폴더에 있는 SampleButton.Prefab를 생성된 Canvas의 하위로 끌어다 놓습니다. NaverGameSDK에서 기본으로 제공하는 버튼이 생성됩니다.

  • NaverGame SDK 실행 버튼은 개발 편의를 위해 NaverGame SDK가 기본으로 제공하는 버튼으로 직접 생성해도 됩니다. SampleBehaviour.cs 파일에 샘플 코드가 작성되어 있습니다.

  • NaverGame SDK 의 실행버튼은 유니티의 UGUI를 기반으로 작성되었습니다. UGUI를 사용하지 않거나 다른 라이브러리를 사용할 경우에도 SampleBehaviour.cs 파일을 참조하여 사용하실 수 있습니다.

운영체제별 NaverGame SDK에 관한 자세한 내용은 GitHub 저장소를 참고합니다.

2. Android 추가 설정

GooglePlayStore 정책 (https://support.google.com/googleplay/android-developer/answer/11926878?hl=ko) 에 따라 2022년 11월부터 targetSDK 31이 강제되며 네이버게임 SDK 는 Android 12 (API 수준 31) 이상을 지원하려면 Unity 2020 이후 버전을 설치해야 합니다.

Unity 2019 이하 버전에 대한 설정은 별도 가이드 에서 당분간 제공되지만 빌드에러에 대한 기술적 지원은 어렵습니다. 본 가이드에서는 2021.3.6f 버전을 기준으로 가이드 하고 있습니다.

2-0 minSdkVersion 설정

minSdkVersion 은 21 이상을 설정하셔야 합니다.

라이브러리 호환성을 위하여 minSdkVersion을 19로 설정하였지만 OkHttp 3.14.7 버전의 targetSdk30 이슈(https://github.com/square/okhttp/issues/5162)로 인해 21 버전 이상을 사용 하셔야 하며, 21 미만 지원을 위해서는 별도의 설정을 추가해야 하고 Gradle 빌드에서만 지원 합니다.

21 미만 버전을 위한 설정은 Android 가이드의 해당 링크를 참조해주시기 바랍니다.

2-2. Unity 2020 이후 버전의 라이브러리 설치

NaverGameSDK 1.3.2 버전부터는 라이브러리 충돌 (duplicate class) 이슈를 회피하기 위하여 Unity 2020 버전부터 정식으로 지원하는 [Android 라이브러리 프로젝트] 방식으로 제공되며 unityproject 파일을 임포트시 자동으로 포함됩니다. 예전 방식으로의 라이브러리 설치를 원하시는 경우 별도 가이드 를 참조 부탁드립니다.

유니티 에서는 2019 버전부터 지원된다고 가이드 하고 있으나 내부 테스트시 여러가지 문제점이 발견되어 2021 버전을 기준으로 하고 있습니다.

2-3. Gradle 빌드 설정

Project Settings > Player Settings > Android > Publishing Settings 를 열어 Custom Gradle Properties Template 와 Custom Main Manifest 를 체크합니다.

Assets/Plugins/Android/gradleTemplate.properties 항목을 열어 다음과 같이 android.useAndroidX, android.enableJetifier항목을 true 로 추가 해줍니다.

android.useAndroidX = true
android.enableJetifier=true
**ADDITIONAL_PROPERTIES**

Assets/Plugins/Android/AndroidManifest.xml 항목을 열어 <activity> 항목에 android:exported = "true" 를 추가합니다.

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.unity3d.player"
    xmlns:tools="http://schemas.android.com/tools">
    <application>
        <activity android:name="com.unity3d.player.UnityPlayerActivity"
                  android:theme="@style/UnityThemeSelector" android:exported = "true" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
        </activity>
    </application>
</manifest>

NaverGameSDK Android 라이브러리 프로젝트의 targetSDK 를 변경하려면 NGSDK>Plugins>Android>navergamesdk.androidlib>build.gradle 파일을 수정하여 라이브러리 설정을 변경 할 수 있습니다.

2-4. Minify 설정

Release 빌드를 위한 Minify(proguard) 설정을 합니다

  • Build Settings > Player Settings > AndroidTab > Publishing Settings > Custom Proguard File 설정을 체크하여 새로운 proguard-user.txt 파일을 생성합니다.

  • Build Settings > Player Settings > AndroidTab > Publishing Settings > Minify 에서 Release를 활성화 합니다.

  • proguard-user.txt 파일을 열고 다음과 같은 프로가드 설정을 추가 합니다


#retrofit 2

# Retrofit does reflection on generic parameters. InnerClasses is required to use Signature and
# EnclosingMethod is required to use InnerClasses.
-keepattributes Signature, InnerClasses, EnclosingMethod

# Retrofit does reflection on method and parameter annotations.
-keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations

# Retain service method parameters when optimizing.
-keepclassmembers,allowshrinking,allowobfuscation interface * {
    @retrofit2.http.* <methods>;
}

# Ignore annotation used for build tooling.
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement

# Ignore JSR 305 annotations for embedding nullability information.
-dontwarn javax.annotation.**

# Guarded by a NoClassDefFoundError try/catch and only used when on the classpath.
-dontwarn kotlin.Unit

# Top-level functions that can only be used by Kotlin.
-dontwarn retrofit2.KotlinExtensions


#end of retrofit2

#gson
##---------------Begin: proguard configuration for Gson  ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature

# For using GSON @Expose annotation
-keepattributes *Annotation*

# Gson specific classes
-dontwarn sun.misc.**
#-keep class com.google.gson.stream.** { *; }



# Prevent proguard from stripping interface information from TypeAdapterFactory,
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer

##---------------End: proguard configuration for Gson  ----------
#end of gson

#glide
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
  **[] $VALUES;
  public *;
}
#end of glide

#kotlin
-keep class kotlin.** { *; }
-keep class kotlin.Metadata { *; }
-dontwarn kotlin.**
-keepclassmembers class **$WhenMappings {
    <fields>;
}
-keepclassmembers class kotlin.Metadata {
    public <fields>;
    public <methods>;
}
#End of kotlin


#navergame sdk
# Application classes that will be serialized/deserialized over Gson
-keep class com.navercorp.nng.android.sdk.api.Host** { *; }
-keep class com.navercorp.nng.android.sdk.api.service** { *; }
-keep class com.navercorp.nng.android.sdk.api.entity** { *; }

-keep class com.navercorp.nng.android.sdk.NngNdkWrapper** { *; }
-keepclassmembers class com.navercorp.nng.android.sdk.NngNdkWrapper { *; }

-keep class com.navercorp.nng.android.sdk.NNGLink** { *; }
-keep class com.navercorp.nng.android.sdk.NNGLink$Companion { *; }
-keepclassmembers class com.navercorp.nng.android.sdk.NNGLink {
    public static ** Companion;
}
-keep public interface com.navercorp.nng.android.sdk.NNGCallbackListener {*;}
-keep class com.navercorp.nng.android.sdk.NNGConfig** { *; }


#end of sdk

3. iOS 추가설정

네이버 게임 iOS SDK는 iOS 12.0 버전부터 지원합니다.

iOS용 게임을 개발할 때에는 다음과 같은 사항을 추가로 설정해야 합니다.

3-1 .bundle 파일 링크

Unity 5.4.0f3 버전 이상에서는 iOS용 애플리케이션을 빌드할 때 .bundle 파일이 링크되지 않도록 설정돼 있습니다. NNGSDK.bundle 파일을 링크하도록 다음과 같이 Select for platforms for plugin에서 iOS를 선택해야 합니다.

3-2. Xcode 설정

Xcode에서 다음과 같이 개발 환경을 설정합니다.

  • TARGETS 항목 중 프레임 워크를 선택합니다.

  • Build Setting 탭을 선택하고 Linking 항목에서 Other Linker Flags를 찾습니다.

    • Basic 또는 Customized모드 인 경우 Other Linker Flag가 보이지 않는 경우도 있습니다.이 경우 All 모드를 선택합니다.

    • 우상단에 위치한 검색창에 Other Linker Flag를 입력하면 쉽게 찾을 수 있습니다.

  • Other Linker Flags-ObjC 옵션과 -lc++ 옵션을 추가합니다.

  • Info.plist에 아래의 사용자 권한 획득 옵션을 추가합니다.

    • Privacy - Camera Usage Description

    • Privacy - Photo Library Usage Description

  • TARGETS 항목 중 실행될 앱을 선택하고 Info탭의 URL Types 항목에 Identifier 값과 URL Schemes값을입력합니다.

  • Identifier 값은 해당 TARGETGeneral 탭에서 확인할 수 있습니다.

  • URL Schemes 값에는 네이버 아이디로 로그인 개발자 센터에 애플리케이션을 등록할 때 입력한 URL Scheme 값을입력하면 됩니다.

  • (1.3.6 버전 이하) Build Phases -> Link Binary With LibrariesSafariServices.frameworkNaverLogin.framework 를 추가합니다.

  • (1.3.6 버전 이상) General -> Framework and LibrariesSafariServices.frameworkNaverThirdPartyLogin.framework 를 추가합니다. NaverThirdPartyLogin.framework 의 Embed 설정은 Embed&Sign 으로 설정합니다.

  • (1.3.7 버전 이상) NaverThirdPartyLogin.xcframework 을 UnityFramework 타겟이 아닌 Unity -> Xcode 프로젝트 생성 이후 Unity-iPhone 타겟으로 링크해 줍니다. NaverThirdPartyLogin.xcframework 파일은 navergame-sdk-unity/package/iOS/external-lib/NaverLogin/NaverThirdPartyLogin.xcframework 으로 사용 합니다.

NaverGameSDK 사용

NaverGameSDK를 사용하기 전에 먼저 init 메서드를 호출해야 사용이 가능합니다.

init() 메서드

init() 메서드는 NaverGameSDK 을 셋팅하는 메서드 입니다. 필요한 인자는 다음과 같습니다.

public void init(string loungeId, string clientId, string clientSecret);

다음은 init() 메서드를 구현한 예입니다.

GLink.sharedInstance().init(
    "naver_game_4developer", 
    "UKvNABLDsyEJusJGsXL2",
    "rK4suc_Qd0"
    );

terminateSdk() 메서드

terminateSdk() 메서드는 NaverGameSDK 를 종료시키는 메서드입니다. 특정 상황에서 sdk 를 종료시켜야 할때 호출합니다. 예를들어 GLinkDelegate 콜백을 통해서 전달되는 인게임메뉴코드 를 실행할때에는 반드시 terminateSdk() 메서드를 호출하여 sdk를 닫아주어야 합니다.

void terminateSdk();

다음은 terminateSdk() 메서드를 구현한 예입니다.

Glink.sharedInstance().terminateSdk()

executeHomeBanner() 메서드

등록한 배너창을 띄우는 메서드 입니다.

public void executeHomeBanner()

다음은 executeHomeBanner() 메서드를 구현한 예입니다.

Glink.sharedInstance().executeHomeBanner()

executeSorryBanner() 메서드

점검용 또는 특정 공지사항 페이지를 띄운다. 이 페이지에서는 다른 화면으로 이동하는것이 제한됩니다

public void executeSorryBanner()

다음은 executeSorryBanner() 메서드를 구현한 예입니다.

Glink.sharedInstance().executeSorryBanner();

executeBoard(int boardId) 메서드

특정 게시판을 바로 실행하는 메서드 입니다. boardId 는 웹에서 게시판 접속 시 보이는 https://game.naver.com/lounge/{loungeId}/board/{boardId} 형태의 URL에서 알 수 있습니다.

public void executeBoard(int boardId);

다음은 executeBoard() 메서드를 구현한 예입니다.

Glink.sharedInstance().executeBoard(1);

executeFeed(long feedId, bool isTempFeedId) 메서드

등록된 글의 번호로 바로 실행하는 메서드 입니다. 만약 예약노출을 통해서 등록한 예약 게시글의 경우에는 예약글의 번호를 feedId 에 입력하고 IsTempFeedId 를 true 로 입력해야 합니다.

예약글이 게시되기 전에는 메서드를 실행하더라도 글이 노출되지 않습니다.

  • feedId: 게시글 또는 예약게시글의 번호

  • isTempFeedId: FeedId 가 게시글 인 경우 false, feedId가 예약게시글 인 경우 true

void executeFeed(long feedId, bool isTempFeedId);

다음은 executeFeed() 메서드를 구현한 예입니다.

Glink.sharedInstance().executeFeed(50154, true);

executeFeedWriting(int boardId, string title, string text, string imageFilePath) 메서드

글쓰기 화면을 실행하는 메서드 입니다. boardId는 게시판번호, title은 글의 제목, text는 글의 내용, imageFilePath는 첨부 이미지의 경로이며 이미지는 한 개만 첨부가 가능합니다.

모든 파라미터는 필수가 아니며 입력되는 경우 글 쓰기 화면에 미리 세팅됩니다.

  • boardId: 게시판 번호입니다. 웹에서 게시판 접속 시 보이는 https://game.naver.com/lounge/{loungeId}/board/{boardId} 형태의 URL에서 알 수 있습니다.

  • title: 글의 제목입니다.

  • text: 본문에 추가될 문자열 입니다.

  • imageFilePath: 첨부될 이미지의 LocalPath 입니다. 안드로이드의 경우 사진 권환 획득의 절차가 있으므로 해당 값을 직접 입력할 시 동작여부를 꼼꼼히 확인해야 합니다.

void executeFeedWriting(
int boardId, String text, String text, String imageFilePath);

다음은 executeFeedWriting() 메서드를 구현한 예입니다.

  Glink.sharedInstance().executeFeedWriting(54,"제목 테스트","본문테스트",
  "content://com.example.contentprovidersample.provider/cheeses")

setCanWriteFeedByScreenshot(bool enabled) 메서드

유저가 스크린샷을 캡쳐했을때 이를 감지하여 글쓰기로 연결하는 버튼을 띄우는 것을 설정하는 메서드 입니다. 미호출시 기본값은 ON(true) 입니다.

  • enabled: true 이면 스크린샷을 캡쳐했을때 글쓰기 버튼을 띄웁니다.

void setCanWriteFeedByScreenshot(bool enable);

다음은 setCanWriteFeedByScreenshot() 메서드를 구현한 예입니다.

  Glink.sharedInstance().setCanWriteFeedByScreenshot(true)

setGameId(string gameId) 메서드

네이버로그인과 연동되어 해당유저와 네이버아이디를 매칭시킵니다. 글쓰기와 댓글쓰기등을 통한 이벤트참여시 당첨된 유저의 게임아이디를 확인할 수 있습니다.

init함수가 호출된 이후에 가능한 시점에 호출해주시면 됩니다.

  • gameId: 식별가능한 게임아이디를 입력합니다. 네이버아이디 당 하나만 저장됩니다.

void setGameId(string gameId);

다음은 setGameId() 메서드를 구현한 예입니다.

  Glink.sharedInstance().setGameId("your_game_id_for_test")

setAppName(string appName) 메서드

앱 이름을 설정하는 메서드로 iOS 환경에서만 유효합니다. 네이버 아이디로 로그인 개발자 센터에 등록한 앱 이름과 동일하게 설정해야 합니다.

init함수가 호출된 이후에 가능한 시점에 호출해주시면 됩니다.

void setAppName(string appName);

다음은 setAppName() 메서드를 구현한 예입니다.

Glink.sharedInstance().setAppName("your_game_name")

setAppScheme(string appScheme) 메서드

앱 스킴을 설정하는 메서드로 iOS 환경에서만 유효합니다. 네이버 아이디로 로그인 개발자 센터에 등록한 앱 스킴과 동일하게 설정해야 합니다.

init함수가 호출된 이후에 가능한 시점에 호출해주시면 됩니다.

void setAppScheme(string appScheme);

다음은 setAppScheme() 메서드를 구현한 예입니다.

Glink.sharedInstance().setAppScheme("your_ios_app_scheme")

getAuthSettingDescription() 메서드

인증 오류 발생 시 살펴봐야 할 디버그 용도의 문자열입니다. Client ID, Client Secret, 앱 이름, 앱 스킴이 포함되어 있습니다. 각 값이 두 번씩 출력되는데, 괄호 없이 출력되는 내용은 실제 인증에 사용된 값이며 괄호로 싸인 내용은 SDK에서 캐시하고 있는 값입니다. 실제 인증에 사용된 값, SDK에 캐시된 값, 그리고 네이버 아이디로 로그인 개발자 센터에 등록된 값이 모두 일치해야 합니다.

string getAuthSettingDescription();

다음은 getAuthSettingDescription() 메서드를 구현한 예입니다.

Glink.sharedInstance().getAuthSettingDescription()

getCountryCode() 메서드

단말기의 countryCode를 얻어옵니다.

public string getCountryCode(Activity activity);

countryCode는 두 개의 알파벳으로 이루어진 국가코드(ISO 3166-1 alpha-2)입니다. 이를 활용하면 코드 내에서 국가별 분기처리가 가능합니다. 주요 국가코드는 다음과 같으며이외의 국가 코드는 링크를 참고하십시오.

국가코드

국가

CN

중국

JP

일본

KR

대한민국

TH

태국

US

미국

다음은 getCountryCode() 메서드를 사용하여 대한민국의 경우에만 SDK 를 초기화 하고 배너를 호출하는 예입니다.

if (GLink.sharedInstance().getCountryCode().Equals("KR"))
{
    GLink.sharedInstance().init("LoungeId","ClientId","ClientSecret");
    GLink.sharedInstance().executeHomeBanner();
}

GLinkDelegate 딜리게이트

Sdk 내부에서 특정 이벤트가 발생했을때 event 를 통해서 이를 GameEngine 에 알립니다.

SdkOpenedDelegate 이벤트

NaverGameSdk 가 실행되었을때 발생합니다.

public delegate void SdkOpenedDelegate();
public static event SdkOpenedDelegate sdkOpenedEvent;

등록방식은 다음과 같습니다.

private void Awake()
{
    GLinkDelegate.sdkOpenedEvent += SdkOpenedEvent;
}
void SdkOpenedEvent()
{
    Debug.Log("BannerOpenedEvent");
}

SdkClosedDelegate 이벤트

NaverGameSdk 가 종료되었을 때 발생합니다.

public delegate void SdkClosedDelegate();
public static event SdkClosedDelegate sdkClosedEvent;

등록방식은 다음과 같습니다.

private void Awake()
{
    GLinkDelegate.sdkClosedEvent += SdkClosedEvent;
}
void SdkClosedEvent()
{
    Debug.Log("BannerClosedEvent");
}

SdkCallInGameMenuCode 딜리게이트

NaverGameSdk 에서 인게임메뉴코드 를 실행해야 할 때 발생합니다. 공식 라운지 관리페이지 > SDK 관리 > 배너관리 페이지에서 배너에 '인게임 메뉴' 를 등록했을때 사용합니다. Android 와 iOS 각각의 플랫폼에 따라 등록한 값이 각자 전달되므로 다른 값을 입력했다면 각차 처리해 주셔야 합니다.

public delegate void SdkCallInGameMenuCode(string InGameMenuCode);
public static event SdkCallInGameMenuCode sdkCallInGameMenuCode;

등록방식은 다음과 같습니다.

private void Awake()
{
    GLinkDelegate.sdkCallInGameMenuCode += SdkCallInGameMenuCode;
}
void SdkCallInGameMenuCode(string inGameMenuCode)
{
    GLink.sharedInstance().terminateSdk();
    Debug.Log("SdkCallInGameMenuCode " + inGameMenuCode);
}

빌드

각 플랫폼에 맞게 빌드해서 정상적으로 빌드되면 SDK사용이 가능합니다.

1. 발생 가능한 빌드 에러

1-1 안드로이드 빌드에러

2. Unity 2019 이하버전의 빌드

GooglePlayStore 정책 (https://support.google.com/googleplay/android-developer/answer/11926878?hl=ko) 에 따라 2022년 11월부터 targetSDK 31이 강제됩니다. 이에따라 NaverGameSDK도 targetSDK31 버전을 기준으로 가이드되며, Unity 2019 이하 버전은 여러가지 제약사항이 많아 빌드가 실패하는 경우가 많습니다. Unity2020 이후 버전의 사용을 권장해 드리며 Unity2019 이하 버전의 빌드에러에 대한 기술적 지원은 힘든 점 양해 부탁드립니다.

2-0. Unity 2019 버전에서 targetSDK31 이상으로 gradle 빌드 설정

Unity 2019 버전에서 targetSDK31 이상을 컴파일 하기 위해서는 커스텀 그래들을 설정해 주셔야 합니다. 링크를 참조하여 그래들 설정을 진행해 주시기 바랍니다.

2-1. Unity 2019 버전을 위한 NaverGameSDK Android 설정

Unity 2020 이후 라이브러리 패키지의 'NGSDK/Plugins/Android/navergamesdk.androidlib/libs 폴더에서 [navergame-sdk-gradle-x.x.x.aar] 파일을 'NGSDK/Plugins/Android/' 폴더로 이동하고 [navergamesdk.androidlib] 폴더는 삭제합니다.

Project Settings > Player > Android Tab > Publishing Settings > Build로 이동하여 Custom Main Gradle Template 와 Custom Gradle Properties Template를 선택합니다.

옵션이 체크되었다면 Assets/Plugins/Android 폴더에 mainTemplate.gradle 파일이 생성되었을 것입니다. 해당 파일을 편집기로 열어 dependencies 항목에 다음과 같이 종속 라이브러리를 추가합니다.

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation "com.naver.nid:naveridlogin-android-sdk:4.2.6" // naveridlogin
        implementation "org.jetbrains.kotlin:kotlin-stdlib:1.7.20"      // Kotlin
        implementation "androidx.viewpager2:viewpager2:1.0.0"           // Viewpager2
        implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"   //swiperefreshlayout
        implementation "com.github.bumptech.glide:glide:3.7.0"          // Glide
        implementation "com.squareup.retrofit2:retrofit:2.9.0"          // Retrofit2
        implementation "com.squareup.retrofit2:converter-gson:2.9.0"
**DEPS**}

1.2.0 버전부터 글쓰기 기능을 위하여 naveridlogin-android-sdk 가 추가되었고, kotlin-stdlib, retrofit, converter-gson 의 버전이 변경되었으니 1.x.x 버전에서 업그레이드시에는 반드시 확인 부탁드립니다.

그리고 gradleTemplate.properties 항목도 열어 다음과 같이 android.useAndroidX, android.enableJetifier항목을 true 로 추가 해줍니다.

android.useAndroidX = true
android.enableJetifier=true
**ADDITIONAL_PROPERTIES**

가로 모드, 세로 모드

NaverGameSDK는 가로 모드와 세로 모드를 모두 지원한다.

Android, iOS 환경 모두 별도로 설정하지 않아도 화면의 가로, 세로 상태에 따라 가로 모드, 세로 모드가 자동으로 적용된다.

Last updated