UNREAL
Quick Start
์ต์ ๋ฒ์ ๋ค์ด๋ก๋
๋ค์ด๋ฒ ๊ฒ์SDK์ ์ํ ํ๋ก์ ํธ๋ฅผ Unreal Engine์์ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
sample/unreal-sample-4.23.1 ํด๋ ์์ ํ๋ก์ ํธ๋ฅผ Unreal Editor ์์ ์คํํ๋ค.
์ฝํ ํธ -> NewMap.umap ํ์ผ์ ์ฐ๋ค.
์๋์ ํ -> ๊ฒ์๋ชจ๋ ์ NNGUnrealSampleGameMode ๊ฐ ์ ํ ๋์ด์๋๊ฒ์ ํ์ธํ๋ค.
ํ ์คํธ ๊ธฐ๊ธฐ์ ์คํํ์ฌ StartHome ๋ฒํผ์ ํด๋ฆญํ์ฌ SDK๊ฐ ์ ์์ ์ผ๋ก ์คํ๋๋ ๊ฒ์ ํ์ธํ๋ค.
๊ธฐ์กด ํ๋ก์ ํธ์ NaverGameSDK ์ ์ฉ
1. ํ๋ฌ๊ทธ์ธ ์ค์น
๋ณธ ๊ฐ์ด๋๋ Unreal 4.23.1 ๋ฒ์ ์ ๊ธฐ์ค์ผ๋ก ์์ฑ๋์์ต๋๋ค.
ํ๋ก์ ํธ๊ฐ ์๋ค๋ฉด ์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ญ๋๋ค.

ํ๋ก์ ํธ๊ฐ ์คํ๋์์ผ๋ฉด package ํด๋์ NaverGameSdk_xxx.zip ํ์ผ์ ์์ถํด์ ํ์ฌ PlugIns ํด๋์ ๋ถ์ฌ๋ฃ๊ธฐ ํฉ๋๋ค. ๋ง์ฝ PlugInsํด๋๊ฐ ์์ผ๋ฉด ์๋ก ์์ฑํฉ๋๋ค. ํด๋๋ช ์ NaverGameSdk ๊ฐ ๋์ด์ผ ํฉ๋๋ค.

์ธ๋ฆฌ์ผ ์์ง์ ์ฌ์คํํ๊ณ ์ธํ ์ ํ๋ฌ๊ทธ์ธ ์ ์คํํ์ฌ others ์น์ ์ NaverGameSDK ๊ฐ ์ ์ ์ฉ๋์๋์ง ํ์ธํฉ๋๋ค.


2. NaverGameSdk ์ ์ฉ
ํ๋ฌ๊ทธ์ธ์ด ์ค์ ๋์์ผ๋ฉด ๋ธ๋ฃจํ๋ฆฐํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ๋ฆฌ์ผ ํ๋ก์ ํธ์ NaverGameSdk ๋ฅผ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ฐ์ด๋ํฉ๋๋ค
ํ์ฌ ๋ ๋ฒจ์ ๋ ๋ฒจ๋ธ๋ฃจํ๋ฆฐํธ ๋ฅผ ํธ์งํฉ๋๋ค.

๋ ๋ฒจ ๋ธ๋ฃจํ๋ฆฐํธ๊ฐ ์ด๋ ธ์ผ๋ฉด ๊ฒ์ ์์์์ ๋ฏธ๋ฆฌ์์ฑ๋ ๋ฉ์ธ๋ฉ๋ด๋ฅผ ๋์ฐ๋๋ก ์ค์ ํ๊ฒ ์ต๋๋ค.
BeginPlay ์ด๋ฒคํธ์ ํ์ดํ๋ฅผ ๋๋๊ทธํ์ฌ ์์ ฏ ์์ฑ์ ์ ํํฉ๋๋ค.

์์ ฏ์ ์์ฑํ์์ผ๋ฉด Class์ ๋๋กญ๋ฐ์ค๋ฅผ ์ ํํ์ฌ mainMenu ๋ธ๋ฃจํ๋ฆฐํธ๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค.

์์ ฏ์์ฑ์ ๋ค์ํ๋ก์ฐ๋ฅผ ๋์ด์ Add to Viewport ๋ช ๋ น์ ์คํํฉ๋๋ค. ํ๊น์ Return Value๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค.

์ฝํ ์ธ ๋ธ๋ผ์ฐ์ ์ ์์คํจ๋์ ์ด๊ณ NaverGameSdk์ฝํ ์ธ ํด๋๋ฅผ ์ ํํ์ฌ mainMenu ๋ธ๋ฃจํ๋ฆฐํธ๋ฅผ ํธ์งํฉ๋๋ค.

๊ทธ๋ํ ํธ์งํ๋ฉด์ผ๋ก ๋ค์ด๊ฐ์ Init ํจ์์ ์ธ์๋ฅผ ํด๋ผ์ด์ธํธ์ ๋ง๊ฒ ์์ ํฉ๋๋ค.
Client Id: ๋ค์ด๋ฒ ์์ด๋๋ก ๋ก๊ทธ์ธ ๊ฐ๋ฐ์ ์ผํฐ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฑ๋กํ๊ณ ๋ฐ์ ํด๋ผ์ด์ธํธ ์์ด๋
Client Secret: ๋ค์ด๋ฒ ์์ด๋๋ก ๋ก๊ทธ์ธ ๊ฐ๋ฐ์ ์ผํฐ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฑ๋กํ๊ณ ๋ฐ์ ํด๋ผ์ด์ธํธ ์ํฌ๋ฆฟ
Lounge Id: ๊ณต์๋ผ์ด์ง๋ฅผ ์ ์ฒญํ๊ณ ๋ฐ์ LoungeId

์ฝ๋ฐฑํจ์ (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 ํ๊ฒฝ์ค์
์๋๋ก์ด๋๋ฒ์ ์ ๊ทธ๋๋ค๋น๋๋ง ์ง์ํฉ๋๋ค. Enable Gradle Instead of Ant ๋ฅผ ์ฒดํฌํ์ฌ ๊ทธ๋๋ค๋น๋๋ก ์ ํํฉ๋๋ค.

ApkPackaging ์์ ์ ์ด๊ณ application ๋ ธ๋์ ์๋ฆฌ๋จผํธ๋ฅผ ์ถ๊ฐ ๋ฒํผ์ ๋๋ฅด๊ณ android.requestLegacyExternalStorage="true" ํญ๋ชฉ์ ์ถ๊ฐํฉ๋๋ค.
(Target SDK Version -> 30 ์ด ์๋ถํฐ๋ android.requestLegacyExternalStorage ๋ฅผ ์ถ๊ฐํ์ง ์์๋ ๋ฉ๋๋ค.)


4. iOS ํ๊ฒฝ์ค์
DefaultEngine.ini ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ํ๋ก์ ํธ ์ค์ ์ ์ถ๊ฐํฉ๋๋ค.
AdditionalLinkerFlags=-ObjC -lc++
AdditionalShippingLinkerFlags=-ObjC -lc++
AdditionalPlistData=<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>gLinkSample</string> </array> </dict> </array><key>NSAppTransportSecurity</key><dict><key>NSAllowsArbitraryLoads</key><true/></dict> <key>LSApplicationQueriesSchemes</key><array><string>naversearchapp</string><string>naversearchthirdlogin</string></array> <key>CFBundleURLTypes</key><array><dict><key>CFBundleTypeRole</key><string>Editor</string><key>CFBundleURLSchemes</key><array><string>nngsdksample</string></array></dict></array><key>NSPhotoLibraryUsageDescription</key><string>Access your photos to create a post.</string>
NaverGameSdk Interface
Init() ๋ฉ์๋
Init() ๋ฉ์๋๋ NaverGameSDK ์ ์ ํ ํ๋ ๋ฉ์๋ ์ ๋๋ค.
ClientId: ๋ค์ด๋ฒ ์์ด๋๋ก ๋ก๊ทธ์ธ ๊ฐ๋ฐ์ ์ผํฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฑ๋กํ๊ณ ๋ฐ์ ํด๋ผ์ด์ธํธ ์์ด๋ ClientId
ClientSecret: ๋ค์ด๋ฒ ์์ด๋๋ก ๋ก๊ทธ์ธ ๊ฐ๋ฐ์ ์ผํฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฑ๋กํ๊ณ ๋ฐ์ ํด๋ผ์ด์ธํธ ์ํฌ๋ฆฟ
LoungeId: ๊ณต์๋ผ์ด์ง๋ฅผ ์ ์ฒญํ๊ณ ๋ฐ์ LoungeId
void UGLink::Init(FString ClientId, FString ClientSecret, FString LoungeId)
TerminateSdk() ๋ฉ์๋
TerminateSdk() ๋ฉ์๋๋ NaverGameSDK ๋ฅผ ์ข ๋ฃ์ํค๋ ๋ฉ์๋์ ๋๋ค. ํน์ ์ํฉ์์ sdk ๋ฅผ ์ข ๋ฃ์์ผ์ผ ํ ๋ ํธ์ถํฉ๋๋ค. ์๋ฅผ๋ค์ด OnReceiveInGameMenuCode Delegate ์ฝ๋ฐฑ์ ํตํด์ ์ ๋ฌ๋๋ ์ธ๊ฒ์๋ฉ๋ด์ฝ๋ ๋ฅผ ์คํํ ๋์๋ ๋ฐ๋์ TerminateSdk() ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ sdk๋ฅผ ๋ซ์์ฃผ์ด์ผ ํฉ๋๋ค.
void UGLink::TerminateSdk()
ExecuteHomeBanner() ๋ฉ์๋
๋ฑ๋กํ ๋ฐฐ๋์ฐฝ์ ๋์ฐ๋ ๋ฉ์๋ ์ ๋๋ค.
void UGLink::ExecuteHomeBanner()
ExecuteSorryBanner() ๋ฉ์๋
๋ฑ๋กํ ์ ๊ฒ์ฉ ํ์ด์ง ๋๋ ํน์ ๊ณต์ง์ฌํญ ํ์ด์ง๋ฅผ ๋์ฐ๋ ๋ฉ์๋ ์ ๋๋ค.
void UGLink::ExecuteSorryBanner()
ExecuteBoard(int BoardId) ๋ฉ์๋
ํน์ ๊ฒ์ํ์ ๋ฐ๋ก ์คํํ๋ ๋ฉ์๋ ์ ๋๋ค. BoardId ๋ ์น์์ ๊ฒ์ํ ์ ์ ์ ๋ณด์ด๋ https://game.naver.com/lounge/{loungeId}/board/{boardId} ํํ์ URL์์ ์ ์ ์์ต๋๋ค.
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)
ExecuteFeedWriting(int BoardId , FString Title, FString content, FString ImageFilePath) ๋ฉ์๋
๊ธ์ฐ๊ธฐ ํ๋ฉด์ ์คํํ๋ ๋ฉ์๋ ์ ๋๋ค. BoardId๋ ๊ฒ์ํ๋ฒํธ, Title์ ๊ธ์ ์ ๋ชฉ, Text๋ ๊ธ์ ๋ด์ฉ, ImageFilePath๋ ์ฒจ๋ถ ์ด๋ฏธ์ง์ ๊ฒฝ๋ก์ด๋ฉฐ ์ด๋ฏธ์ง๋ ํ ๊ฐ๋ง ์ฒจ๋ถ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๋ชจ๋ ํ๋ผ๋ฏธํฐ๋ ํ์๊ฐ ์๋๋ฉฐ ์ ๋ ฅ๋๋ ๊ฒฝ์ฐ ๊ธ ์ฐ๊ธฐ ํ๋ฉด์ ๋ฏธ๋ฆฌ ์ธํ ๋ฉ๋๋ค.
BoardId: ๊ฒ์ํ ๋ฒํธ์ ๋๋ค. ์น์์ ๊ฒ์ํ ์ ์ ์ ๋ณด์ด๋ https://game.naver.com/lounge/{loungeId}/board/{boardId} ํํ์ URL์์ ์ ์ ์์ต๋๋ค.
Title: ๊ธ์ ์ ๋ชฉ์ ๋๋ค.
Text: ๋ณธ๋ฌธ์ ์ถ๊ฐ๋ ๋ฌธ์์ด ์ ๋๋ค.
ImageFilePath: ์ฒจ๋ถ๋ ์ด๋ฏธ์ง์ LocalPath ์ ๋๋ค. ์ฌ์ง ๊ถํ ํ๋์ ์ ์ฐจ๊ฐ ์์ผ๋ฏ๋ก ํด๋น ๊ฐ์ ์ง์ ์ ๋ ฅํ ์ ๊ฐ ํ๋ซํผ์์ ๋์์ฌ๋ถ๋ฅผ ๊ผผ๊ผผํ ํ์ธํด์ผ ํฉ๋๋ค.
public UGLINK::ExecuteFeedWriting(
int BoardId, FString Title, FString Text, FString ImageFilePath);
SetCanWriteFeedByScreenshot(bool Enabled) ๋ฉ์๋
์ ์ ๊ฐ ์คํฌ๋ฆฐ์ท์ ์บก์ณํ์๋ ์ด๋ฅผ ๊ฐ์งํ์ฌ ๊ธ์ฐ๊ธฐ๋ก ์ฐ๊ฒฐํ๋ ๋ฒํผ์ ๋์ฐ๋ ๊ฒ์ ์ค์ ํ๋ ๋ฉ์๋ ์ ๋๋ค. ๋ฏธํธ์ถ์ ๊ธฐ๋ณธ๊ฐ์ ON(true) ์ ๋๋ค.
Enabled: true ์ด๋ฉด ์คํฌ๋ฆฐ์ท์ ์บก์ณํ์๋ ๊ธ์ฐ๊ธฐ ๋ฒํผ์ ๋์๋๋ค.
public UGLINK::SetCanWriteFeedByScreenshot(bool Enabled);
SetGameId(FString GameId) ๋ฉ์๋
๋ค์ด๋ฒ๋ก๊ทธ์ธ๊ณผ ์ฐ๋๋์ด ํด๋น์ ์ ์ ๋ค์ด๋ฒ์์ด๋๋ฅผ ๋งค์นญ์ํต๋๋ค. ๊ธ์ฐ๊ธฐ์ ๋๊ธ์ฐ๊ธฐ๋ฑ์ ํตํ ์ด๋ฒคํธ์ฐธ์ฌ์ ๋น์ฒจ๋ ์ ์ ์ ๊ฒ์์์ด๋๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
Initํจ์๊ฐ ํธ์ถ๋ ์ดํ์ ๊ฐ๋ฅํ ์์ ์ ํธ์ถํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
GameId: ์๋ณ๊ฐ๋ฅํ ๊ฒ์์์ด๋๋ฅผ ์ ๋ ฅํฉ๋๋ค. ๋ค์ด๋ฒ์์ด๋ ๋น ํ๋๋ง ์ ์ฅ๋ฉ๋๋ค.
static void SetGameId(FString GameId);
๋ค์์ SetGameId() ๋ฉ์๋๋ฅผ ๊ตฌํํ ์์ ๋๋ค.
NNGLink.putGameId("naver_game_id_for_test")
SetAppName(FString AppName) ๋ฉ์๋
์ฑ ์ด๋ฆ์ ์ค์ ํ๋ ๋ฉ์๋๋ก iOS ํ๊ฒฝ์์๋ง ์ ํจํฉ๋๋ค. ๋ค์ด๋ฒ ์์ด๋๋ก ๋ก๊ทธ์ธ ๊ฐ๋ฐ์ ์ผํฐ์ ๋ฑ๋กํ ์ฑ ์ด๋ฆ๊ณผ ๋์ผํ๊ฒ ์ค์ ํด์ผ ํฉ๋๋ค.
initํจ์๊ฐ ํธ์ถ๋ ์ดํ์ ๊ฐ๋ฅํ ์์ ์ ํธ์ถํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
AppName: ๋ค์ด๋ฒ ์์ด๋๋ก ๋ก๊ทธ์ธ ๊ฐ๋ฐ์ ์ผํฐ์ ๋ฑ๋กํ ์ฑ ์ด๋ฆ์ ๋๋ค.
static void SetAppName(FString AppName);
SetAppScheme(FString AppScheme) ๋ฉ์๋
์ฑ ์คํด์ ์ค์ ํ๋ ๋ฉ์๋๋ก iOS ํ๊ฒฝ์์๋ง ์ ํจํฉ๋๋ค. ๋ค์ด๋ฒ ์์ด๋๋ก ๋ก๊ทธ์ธ ๊ฐ๋ฐ์ ์ผํฐ์ ๋ฑ๋กํ ์ฑ ์คํด๊ณผ ๋์ผํ๊ฒ ์ค์ ํด์ผ ํฉ๋๋ค.
initํจ์๊ฐ ํธ์ถ๋ ์ดํ์ ๊ฐ๋ฅํ ์์ ์ ํธ์ถํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
AppScheme: ๋ค์ด๋ฒ ์์ด๋๋ก ๋ก๊ทธ์ธ ๊ฐ๋ฐ์ ์ผํฐ์ ๋ฑ๋กํ ์ฑ ์คํด์ ๋๋ค.
static void SetAppScheme(FString AppScheme);
GetAuthSettingDescription() ๋ฉ์๋
์ธ์ฆ ์ค๋ฅ ๋ฐ์ ์ ์ดํด๋ด์ผ ํ ๋๋ฒ๊ทธ ์ฉ๋์ ๋ฌธ์์ด์ ๋๋ค. Client ID, Client Secret, ์ฑ ์ด๋ฆ, ์ฑ ์คํด์ด ํฌํจ๋์ด ์์ต๋๋ค. ๊ฐ ๊ฐ์ด ๋ ๋ฒ์ฉ ์ถ๋ ฅ๋๋๋ฐ, ๊ดํธ ์์ด ์ถ๋ ฅ๋๋ ๋ด์ฉ์ ์ค์ ์ธ์ฆ์ ์ฌ์ฉ๋ ๊ฐ์ด๋ฉฐ ๊ดํธ๋ก ์ธ์ธ ๋ด์ฉ์ SDK์์ ์บ์ํ๊ณ ์๋ ๊ฐ์ ๋๋ค. ์ค์ ์ธ์ฆ์ ์ฌ์ฉ๋ ๊ฐ, SDK์ ์บ์๋ ๊ฐ, ๊ทธ๋ฆฌ๊ณ ๋ค์ด๋ฒ ์์ด๋๋ก ๋ก๊ทธ์ธ ๊ฐ๋ฐ์ ์ผํฐ์ ๋ฑ๋ก๋ ๊ฐ์ด ๋ชจ๋ ์ผ์นํด์ผ ํฉ๋๋ค.
static FString GetAuthSettingDescription();
getCountryCode() ๋ฉ์๋
๊ธฐ๊ธฐ์ countryCode๋ฅผ ์ป์ด์ต๋๋ค.
FString UGLink::GetCountryCode()
countryCode๋ ๋ ๊ฐ์ ์ํ๋ฒณ์ผ๋ก ์ด๋ฃจ์ด์ง ๊ตญ๊ฐ์ฝ๋(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 ๊ด๋ฆฌ > ๋ฐฐ๋๊ด๋ฆฌ ํ์ด์ง์์ ๋ฐฐ๋์ '์ธ๊ฒ์ ๋ฉ๋ด' ๋ฅผ ๋ฑ๋กํ์๋ ์ฌ์ฉํฉ๋๋ค. Android ์ iOS ๊ฐ๊ฐ์ ํ๋ซํผ์ ๋ฐ๋ผ ๋ฑ๋กํ ๊ฐ์ด ๊ฐ์ ์ ๋ฌ๋๋ฏ๋ก ๋ค๋ฅธ ๊ฐ์ ์ ๋ ฅํ๋ค๋ฉด ๊ฐ์ฐจ ์ฒ๋ฆฌํด ์ฃผ์ ์ผ ํฉ๋๋ค.
DECLARE_MULTICAST_DELEGATE_OneParam(
FOnReceiveInGameMenuCode, const FString& /* In-Game Menu Code */);
๋ฑ๋ก๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
// ์ธ๊ฒ์ ๋ฉ๋ด ์ฝ๋ ์์
FNaverGameSdkModule::OnReceiveInGameMenuCode.AddUObject
(this, &ANNGUnrealSampleGameMode::OnReceiveInGameMenuCode);
Last updated
Was this helpful?