> For the complete documentation index, see [llms.txt](https://navergame.gitbook.io/naver-game/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://navergame.gitbook.io/naver-game/japanese/integration-guide/unreal.md).

# Unreal

## Quick Start

最新バージョンダウンロード

{% embed url="<https://github.com/naver/navergame-sdk-unreal/archive/refs/tags/1.3.1.zip>" %}

NAVERゲームSDKのサンプルプロジェクトをUnreal Engineで実行する方法は以下のとおりです。

1. **sample/unreal-sample-4.23.1**フォルダ内のプロジェクトをUnreal Editorで実行する。
2. コンテント -> NewMap.umapファイルを開く。
3. ワールドセット -> ゲームモードにNNGUnrealSampleGameModeがセットされているか確認する。
4. テスト機器に実行し、StartHomeボタンをクリックしてSDKが正常に実行されるかを確認する。

## **既存のプロジェクトにNaverGameSDKを適用**

### **1. プログインのインストール**

本ガイドは、Unreal 4.23.1バージョンを基準として作成されています。

* プロジェクトがない場合は新しいプロジェクトを作成してください。

![](/files/aNXjMpSewmN718a34zrd)

* プロジェクトが実行されたら、packageフォルダのNaverGameSdk\_xxx.zipファイルの圧縮を解いてPlugInsフォルダに貼り付けてください。PlugInsフォルダがない場合は新しく作成してください。フォルダ名はNaverGameSdkにしてください。

![](/files/8Iu92e6uj5yzMA0jFq12)

* Unreal Engineをもう一度実行し、セットのプログインを実行してothersセクションにNaverGameSDKが正しく適用されたか確認してください。

![](/files/kBxnfXNEirmhqHM8xVEM)

![](/files/MFC0UcTPine1QykBx6iV)

### **2. NaverGameSdkの適用**

プログインが設定されたら、ブループリントを使用してUnreal EngineのプロジェクトにNaverGameSdkを適用する方法をガイドします。

* 現在のレベルのレベルブループリントを編集してください。

![レベルブループリントを開く・実行](/files/jOEdRVnLIKnR4xlqseWq)

* レベルブループリントが開いたら、ゲーム開始時に予め作成されたメインメニューが表示されるよう設定してください。
* BeginPlayイベントの矢印をドラッグしてウィジェット作成を選択してください。

![](/files/UutPfQUAkIJE7VlBDInl)

* ウィジェットを作成したら、ClassのDropboxを選択してmainMenuのブループリントに接続してください。

![](/files/iKjdiADgcexCka4kX4wj)

* ウィジェット作成の次のフローを引き出してAdd to Viewportの命令を実行してください。ターゲットはReturn Valueに接続します。

![](/files/LOo7AV2pxRxG1jVJZ7xc)

* コンテンツブラウザのソースパネルを開き、NaverGameSdkコンテンツフォルダを選択してmainMenuのブループリントを編集してください。

![](/files/8i4mFrJmAqhXs2RgKmis)

* グラフ編集画面に入ってInit関数の引数をクライアントに合わせて修正してください。
  * Client Id: [NAVER IDでログイン開発者センター](https://developers.naver.com/apps/#/register?api=nvlogin)でアプリケーションを登録時に受け取ったクライアントID
  * Client Secret: [NAVER IDでログイン開発者センター](https://developers.naver.com/apps/#/register?api=nvlogin)でアプリケーションを登録時に受け取ったクライアントシークレット
  * Lounge Id: 公式ラウンジを申請時に受け取ったLoungeId

![](/files/Cx0a7tfad2E37IDBj3kj)

* コールバック関数(Delegate)は以下の方法で登録することができます。

```
void foo() {

    // 네이버 게임 SDK 시작
    FNaverGameSdkModule::OnSdkStarted.AddUObject(this, &YourModule::OnSdkStarted);
        
    // 네이버 게임 SDK 종료
    FNaverGameSdkModule::OnSdkStopped.AddUObject(this, &YourModule::OnSdkStopped);
        
    // 인게임 메뉴 코드 수신
    FNaverGameSdkModule::OnReceiveInGameMenuCode.AddUObject(this, &YourModule::OnReceiveInGameMenuCode);
}

void YourModule::OnSdkStarted()
{
    UE_LOG(LogTemp, Warning, TEXT("OnSdkStarted"));
}

void YourModule::OnSdkStopped()
{
    UE_LOG(LogTemp, Warning, TEXT("OnSdkStopped"));
}

void YourModule::OnReceiveInGameMenuCode(const FString& InGameMenuCode)
{
    UE_LOG(LogTemp, Warning, TEXT("OnReceiveInGameMenuCode, %s"), *InGameMenuCode );
}

```

* プラグインエンジンの共通設定が完了しました。
* つづけてAndroid、iOSの詳細環境を設定します。

​

### **3. Androidの環境設定**

* AndroidバージョンはGradleビルドにのみ対応しています。Enable Gradle Instead of AntをチェックしてGradleビルドに変換してください。

![](/files/EHelDd7GwOKpKDgemr7p)

* ApkPackagingセクションを開き、applicationノードにElement追加ボタンを押してandroid.requestLegacyExternalStorage="true"項目を追加してください。
* (Target SDK Version -> 30以上はandroid.requestLegacyExternalStorageを追加する必要がありません。)

![](/files/6MTSh5Sgd2dERVjKJjYN)

![](/files/kMZqGETl6wG2zu4SLdgI)

&#x20;

### **4. iOSの環境設定**

{% hint style="info" %}
NAVERゲームのiOS SDKはiOS 12.0以降のバージョンに対応しています。
{% endhint %}

* プロジェクト設定を開いてプラットフォームのうちiOSを選択します。
* 画面右に表示された設定値のうちBuild下位のAdditional Non-Shipping Linker Flags項目とAdditional Shipping Linker Flags項目に下の図のように-ObjCと-lc++の値を追加してください。

![](/files/FrW5fPKjruh0Yiqm98Md)

## **NaverGameSdk Interface**

### **Init()メソッド**

init()メソッドはNaverGameSDKを設定するメソッドです。

* ClientId: [NAVER IDでログイン開発者センター](https://developers.naver.com/products/login/api)にアプリケーションを登録時に受け取ったクライアントID
* ClientSecret: [NAVER IDでログイン開発者センター](https://developers.naver.com/products/login/api)にアプリケーションを登録時に受け取ったクライアントシークレット
* LoungeId: 公式ラウンジを申請時に受け取ったLoungeId

```
void UGLink::Init(FString ClientId, FString ClientSecret, FString LoungeId)
```

### **TerminateSdk()メソッド**

Terminate()メソッドはNaverGameSDKを終了させるメソッドです。特定の状況でsdkを終了させる必要がある場合に呼び出します。例えば、OnReceiveInGameMenuCode Delegateコールバックを通じて送信されるインゲームメニューコードを実行するときには、必ずTerminateSdk()メソッドを呼び出してsdkを閉じなければなりません。

```
void UGLink::TerminateSdk()
```

### **ExecuteHomeBanner()メソッド**

登録したバナーウィンドウを表示させるメソッドです。

```
void UGLink::ExecuteHomeBanner()
```

### **ExecuteSorryBanner()メソッド**

登録した点検用ページまたは特定のお知らせページを表示させるメソッドです。

```
void UGLink::ExecuteSorryBanner()
```

### **ExecuteBoard(int BoardId)メソッド**

**公式ラウンジ管理ページ** > **SDK管理** > **掲示板管理**ページで登録した特定の掲示板を直接実行させるメソッドです。

```
void UGLink::ExecuteBoard(int BoardId)
```

### **ExecuteFeed(int FeedId, bool IsTempFeedId)メソッド**

登録されたFeedIdの投稿を直接実行するメソッドです。**予約機能によって登録された予約投稿**の場合は、予約投稿の番号をFeedIdに入力してIsTempFeedIdを**True**と入力してください。

予約投稿が掲示されるまではメソッドを実行しても投稿は表示されません。

* FeedId: 投稿または予約投稿の番号
* IsTempFeedId: FeedIdが投稿の場合はfalse、FeedIdが予約投稿の場合はtrue

```
void UGLink::ExecuteFeed(int FeedId, bool IsTempFeedId)
```

### **getCountryCode()メソッド**

Android機器のcountryCodeを取得します。

```
FString UGLink::GetCountryCode()
```

countryCodeは2文字のアルファベットで構成された国コード([ISO 3166-1 alpha-2](https://ko.wikipedia.org/wiki/ISO_3166-1_alpha-2))です。これを活用すると、コード内で国別に分岐処理することができます。主な国コードは以下のとおりです。その他の国コードは[リンク](https://ko.wikipedia.org/wiki/ISO_3166-1_alpha-2)をご参考にしてください。

| 国コード | 国  |
| ---- | -- |
| CN   | 中国 |
| JP   | 日本 |
| KR   | 韓国 |
| TH   | タイ |
| US   | 米国 |

​

## **NaverGameSdk Delegate**

Sdk内部で特定のイベントが発生したときにdelegateを通してこれをGameEngineに知らせます。

### **OnSdkStarted()デリゲート**

NaverGameSdkが実行されたときに発生します。

```
DECLARE_MULTICAST_DELEGATE(FOnSdkStarted);
```

登録方法は以下のとおりです。

```
// 네이버 게임 SDK 시작
FNaverGameSdkModule::OnSdkStarted.AddUObject
    (this, &ANNGUnrealSampleGameMode::OnSdkStarted);​
```

### **OnSdkStopped()デリゲート**

NaverGameSdkが終了したときに発生します。

```
DECLARE_MULTICAST_DELEGATE(FOnSdkStopped);
```

登録方法は以下のとおりです。

```
// 네이버 게임 SDK 종료
FNaverGameSdkModule::OnSdkStopped.AddUObject
    (this, &ANNGUnrealSampleGameMode::OnSdkStopped);
```

### **OnReceiveInGameMenuCode(const FString&)デリゲート**

NaverGameSdkでインゲームメニューコードを実行する必要があるときに発生します。**公式ラウンジの管理ページ** > **SDK管理** > **バナー管理**ページでバナー&#x306B;**「インゲームメニュー」**&#x3092;登録したときに使用します。AndroidとiOSの各プラットフォームによって登録した値が各自伝達されるため、他の値を入力した場合は各自処理しなければなりません。

```
DECLARE_MULTICAST_DELEGATE_OneParam(
    FOnReceiveInGameMenuCode, const FString& /* In-Game Menu Code */);
```

登録方法は以下のとおりです。

```
// 인게임 메뉴 코드 수신
FNaverGameSdkModule::OnReceiveInGameMenuCode.AddUObject
    (this, &ANNGUnrealSampleGameMode::OnReceiveInGameMenuCode);
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://navergame.gitbook.io/naver-game/japanese/integration-guide/unreal.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
