- 印刷する
- PDF
Unity SDK
- 印刷する
- PDF
最新のコンテンツが反映されていません。早急にアップデート内容をご提供できるよう努めております。最新のコンテンツ内容は韓国語ページをご参照ください。
Classic/VPC環境で利用できます。
Unityでゲームを開発するための GAMEPOT Unity SDKの使用方法について説明します。
SDKをインストールして環境を構成することで、ゲームとダッシュボードを連携できます。
システム要件
Unity用 GAMEPOT SDKを使用するためのシステム要件は、次の通りです。
- 最低スペック: 2020.3.0以降
- 下位バージョンの Unityへの対応が必要な場合は、お問い合わせチャネルにてご確認ください。
SDKのインストールと環境の構成
GAMEPOT Unity SDKをインストールしてから環境を構成し、GAMEPOTのダッシュボードとゲームを連携してゲーム開発に必要な機能を使用できます。
GAMEPOT SDKでサポートしている言語は次の通りです。
- 韓国語、英語、イタリア語、タイ語、ベトナム語、日本語、中国語(簡体字/繁体字)、インドネシア語、ドイツ語、スペイン語、フランス語
アプリ実行時にデバイスの言語によって SDK内サポート言語で表記され、サポートされていない言語は英語で表記されます。
SDKのインストール
GAMEPOT Unity SDKをインストールし、Unityでプロジェクトを設定する方法は、次の通りです。
- Unity公式公開 GitHub から最新バージョンをダウンロードします。
- Unityで Assets > Import Package > Custom Package... メニューを順にクリックし、nbase-unity-plugin-[version].unitypackage ファイルを読み込みます。
- GAMEPOT 3.0からは mavenと cocoapodsを通じてデプロイされ、デバイス別に簡単な設定で数十種類の外部ライブラリとの統合できます。
iOSビルドが正常に動作するには、cocoapodsがインストールされている必要があります。
External Dependency Manager for Unityを含めてインストールされ、簡単に Android、iOSパッケージをインストールできます。
Android Gradleの設定
- Player Settingsの Publishing Settingsで、Custom Main Gradle Template、Custom Gradle Properties Templateにチェックを入れます。
- Minimum API Level 23にアップグレードします。
- Assets > External Dependency Manager > Android Resolver > Settingsメニューを順にクリックし、Enable Auto-Resolution、Explode AARs項目からチェックを外します。
- 図のようにファイルをエディタから開きます。以下のファイルを確認できます。
次は NBase SDK使用に必要な基本的な Dependency packageを定義したファイルです。追加機能を使用するには、以下のファイルに追加すると Android、iOSでモジュールを使用できます。
Dependency modulesとは
外部 SDKを使用するためのモジュールです。Googleログインの場合、com.google.android.gms:play-services-authのように Googleが提供するモジュールを一緒にインストールする必要があります。
アップデートされた場合、マイナーバージョンのアップデートは常時可能ですが、メジャーアップデートの場合はお問い合わせの後にご使用ください。
<?xml version="1.0" encoding="UTF-8"?>
<dependencies>
<androidPackages>
<androidPackage spec="io.nbase:nbasesdk:3.0.83"/>
</androidPackages>
<iosPods>
<iosPod name="NBase" version="3.0.56" minTargetSdk="15.0" />
</iosPods>
</dependencies>
- Googleログインと Google Play Store決済を使用する場合
<dependencies>
<androidPackages>
<androidPackage spec="io.nbase:nbasesdk:3.0.83"/>
<androidPackage spec="io.nbase:nbase-adapter-provider-google:3.0.7"/>
<androidPackage spec="io.nbase:nbase-adapter-billing-googleplay:3.0.4" />
</androidPackages>
<iosPods>
<iosPod name="NBase" version="3.0.56" minTargetSdk="15.0" />
<iosPod name="NBaseAdapterProviderGoogle" version="3.0.56" minTargetSdk="15.0" />
</iosPods>
</dependencies>
Name | Version | Type | Dependeny modules |
---|---|---|---|
io.nbase:nbasesdk | 3.0.83 | GAMEPOT基本モジュール | X |
io.nbase:nbase-adapter-provider-google | 3.0.7 | Googleログイン | com.google.android.gms:play-services-auth:20.7.0 |
io.nbase:nbase-adapter-provider-apple | 3.0.4 | Appleログイン | X |
io.nbase:nbase-adapter-provider-facebook | 3.0.4 | Facebookログイン | com.facebook.android:facebook-login:latest.release |
io.nbase:nbase-adapter-provider-naver | 3.0.1 | NAVERログイン | |
io.nbase:nbase-adapter-provider-line | 3.0.1 | LINEログイン | |
io.nbase:nbase-adapter-provider-x | 3.0.1 | Xログイン | |
io.nbase:nbase-adapter-billing-googleplay | 3.0.4 | Google Play Store | com.android.billingclient:billing-ktx:6.1.0 |
io.nbase:nbase-adapter-billing-one | 3.0.1 | ONE Store | |
io.nbase:nbase-adapter-billing-galaxy | 3.0.1 | Galaxy Store |
メール、ゲストログインの場合は基本モジュールに適用されています。
NBaseSDKDependencies.xmlの自動設定
ダッシュボード > 環境設定 > SDK自動作成を通じてこのような作業を簡単に制作できるツールを提供します。
カスタマーサポートから製作依頼された場合でも、こちらから設定して提供します。
Assets > External Dependency Manager > Android Resolver > Force Resolveをクリックします。
Dependencies.xmlに定義をした後に Force Resolveをすると mainTemplate.gradleファイルで定義した内容が implementationで自動定義されます。その内容が追加されないとビルド時に関連ライブラリをインポートできません。
iOSの設定
Settings in Tools > GamePotSDK > Edit Settingsをクリックします。
各ソーシャルログイン方式に応じてプッシュ、In-App決済などビルドに必要な Capability設定も自動的に設定されます。
XMLファイルは Editorディレクトリの下に配置され、*Dependencies.xml形式の名前と一致する必要があります。/Assets/NBaseSDK/Editor/NBaseSDKDependencies.xmlファイルを開きます。
「iosPods」と「/iosPods」の間に必要なフレームワークを追加します。基本的に必要なフレームワークは追加されています。
<?xml version="1.0" encoding="UTF-8"?>
<dependencies>
<androidPackages>
...
</androidPackages>
<iosPods>
<iosPod name="NBase" version="3.0.56" minTargetSdk="15.0" />
</iosPods>
</dependencies>
Firebaseのように必要なフレームワークをインストールしたい場合にも、以下のように別途追加します。
<iosPods>
...
<iosPod name="FirebaseMessaging" version="10.20.0" minTargetSdk="9.0" />
<iosPod name="Firebase/Analytics" version="10.15.0" minTargetSdk="9.0" />
...
</iosPods>
Assets > External Dependency Manager > iOS Resolver > Install Cocoapodsをクリックします。
Unityプロジェクトを iOS用にビルドすると Unity-iPhone.xcworkspaceファイルが作成されます。このファイルを開いてください。
Unity-iPhone.xcodeprojの代わりに Unity-iPhone.xcworkspaceを開かないと CocoaPodsの依存関係は使用されません。
Unity 2021からは自動的にそのプロジェクトが選択されます。
Name | Version | Type | Dependeny modules |
---|---|---|---|
NBase | 3.0.56 | GAMEPOT基本モジュール | X |
NBaseAdapterProviderGoogle | 3.0.56 | Googleログイン | |
NBaseAdapterProviderFacebook | 3.0.56 | Facebookログイン | FBSDKLoginKit (17.4.0) |
NBaseAdapterProviderNaver | 3.0.56 | NAVERログイン | |
NBaseAdapterProviderLine | 3.0.56 | LINEログイン | |
NBaseAdapterProviderKakao | 3.0.56 | Kakaoログイン | |
NBaseAdapterProviderX | 3.0.56 | Xログイン |
一部の依存関係にあるフレームワークは Swift Package Managerを通じてのみ追加できます。
「+」ボタンをクリックして Add Package Collectionから「https://github.com/apollographql/apollo-ios.git」を追加します。続けて apollo-iosを選択し、Add Packageから Unity-iPhoneを選択します。
Name | Dependeny modules | Location | Version | Framework |
---|---|---|---|---|
NBase | Apollo | https://github.com/apollographql/apollo-ios.git | 1.15.2 | Apollo, ApolloAPI |
NBaseAdapterProviderKakao | KakaoOpenSDK | https://github.com/kakao/kakao-ios-sdk | 2.23.0 | KakaoSDK, KakaoSDKAuth, kakaoSDKCommon |
事前準備
- プロジェクト IDとプロジェクトキーはダッシュボード > プロジェクトの設定でコピーします。
- ログイン、ストア、連携の環境設定はダッシュボード > プロジェクトの設定で追加したり変更したりできます。
- ログイン別にログイン手段別環境設定を参照し、コンソールに設定してダッシュボードに追加します。
- In-App決済時はストア別環境設定を参照し、コンソールに設定してダッシュボードに追加します。
- In-App決済のために、ストアごとにアイテムを登録します。 ダッシュボード > 決済 > In-Appで追加します。
リセット
リセットを実行するには、ゲームを始める際にロードされる最初の画面に使用されるインスタンスに、以下のコードを追加します。
using UnityEngine;
using NBaseSDK;
public class GamePotExample : MonoBehaviour
{
void Start()
{
NBaseSDK.NBase.initialize(projectId, projectKey, [storeId], [language], [region], (init, error) => {
if (error != null)
{
Debug.Log(error.Message);
return;
}
Debug.Log(init.ToString());
});
}
}
- Parameter
Key | Description | Required |
---|---|---|
projectId | ダッシュボード → プロジェクトの設定 | O |
projectKey | ダッシュボード → プロジェクトの設定 | O |
storeId | 以下の表を参考 | O |
language | 言語(en、ko、jp...) | O |
region | リージョン名(kr、jp、sg、us、eu) | O |
Key | Description |
---|---|
Store.google.ToString() | Google Play Store |
Store.one.ToString() | ONE Store |
Store.galaxy.ToString() | Galaxy Store |
Store.amazon.ToString() | Amazon Store |
Store.huawei.ToString() | Huawei Store |
- Callback
Key | Type | Description |
---|---|---|
Status | bool | 状態 |
Language | string | 言語 |
Country | string | 国 |
RemoteIp | string | IP |
Sandbox | bool | サンドボックスかどうか |
リセット(イベントの受信)
はじめに NBaseイベントを受信するスクリプトを作成します。
このスクリプトは NBaseListenerと呼ばれ、シーンのどんなオブジェクトにも配置できます。このオブジェクトが永続的に存在するように DontDestroyOnLoadメソッドを呼び出すことをお勧めします。
using UnityEngine;
using NBaseSDK;
public class NBaseListener: MonoBehaviour, NBaseEventListener
{
void Start()
{
DontDestroyOnLoad(this.gameObject);
NBaseSDK.NBase.SetEventListener(this);
}
}
ログイン
開発会社で実装したログイン UIにより、ログインボタンをクリックしたときに動作する SDKログイン機能を使用するには、以下のコードを使用します。これが正常に動作するには、ログインに必要なコンソールとダッシュボードの設定がすべて完了している必要があります。
NBaseSDK.NBase.signIn(Provider.google.ToString(), (user, error) => {
if (error != null)
{
if (error.Code == NBaseSDK.NBase.ErrorCode.MEMBER_WITHDRAW) // 退会状態
{
// 退会
Debug.Log(error.Message.ToString()); // 退会メッセージ
}
else if (error.Code == NBaseSDK.NBase.ErrorCode.UPDATE_REQUIRED) // 強制アップデート
{
// 強制アップデート
Debug.Log(error.Message.ToString()); // アップデート案内メッセージ
}
else if (error.Code == NBaseSDK.NBase.ErrorCode.MEMBER_BANNED) // アクセスをブロック
{
// アクセスをブロック
Debug.Log(error.Message.ToString()); // ブロックメッセージ
}
else
{
Debug.Log(error.Message.ToString());
}
}
else
{
// ログインに成功
Debug.Log(user.ToString());
}
return;
});
- Parameter
Key | Description |
---|---|
Provider.google.ToString() | |
Provider.anonymous.ToString() | ゲスト |
Provider.facebook.ToString() | |
Provider.apple.ToString() | Apple |
Provider.kakao.ToString() | Kakao |
Provider.playgame.ToString() | Play Games |
Provider.steam.ToString() | Steam |
Provider.x.ToString() | X |
Provider.line.ToString() | LINE |
Provider.naver.ToString() | NAVER |
Provider.github.ToString() | GitHub |
Provider.microsoft.ToString() | Microsoft |
Provider.huawei.ToString() | HUAWEI |
- Callback
Key | Type | Description |
---|---|---|
Id | string | ユーザーの固有 ID |
Name | string | ユーザーの名前 |
string | ユーザーのメール | |
Token | string | トークン |
Age | int | ユーザーの年齢 |
Birth | string | ユーザーの生年月日 |
Sex | string | ユーザーの性別 |
Profile | string | ユーザーのプロファイル |
Mobile | string | ユーザーの電話番号 |
Metadata | string | メタデータ |
自動ログイン(オプション)
リセットの後、最後にログインした認証手段で自動ログインを試みます。
NBaseSDK.NBase.signInLastLoggedIn((user, error) => {
if (error != null)
{
if (error.Code == NBaseSDK.NBase.ErrorCode.MEMBER_WITHDRAW) // 退会状態
{
// 退会
Debug.Log(error.Message.ToString()); // 退会メッセージ
}
else if (error.Code == NBaseSDK.NBase.ErrorCode.UPDATE_REQUIRED) // 強制アップデート
{
// 強制アップデート
Debug.Log(error.Message.ToString()); // アップデート案内メッセージ
}
else if (error.Code == NBaseSDK.NBase.ErrorCode.MEMBER_BANNED) // アクセスをブロック
{
// アクセスをブロック
Debug.Log(error.Message.ToString()); // ブロックメッセージ
}
else
{
Debug.Log(error.Message.ToString());
}
}
else
{
// ログインに成功
Debug.Log(user.ToString());
}
});
独自の IDとパスワード認証(オプション)
ユーザーがメールアドレスとパスワードを使用してログインできるようにする認証メソッドです。
ユーザーのメールアドレスとパスワードに基づいてユーザー認証を行います。さらに、この機能は、従来のメール/パスワードベースの認証システムで重要な役割を果たします。
NBaseSDK.NBase.signInWithPassword(username, password, (user, error) => {
if (error != null)
{
Debug.Log(error.Message.ToString());
return;
}
});
認証情報でログイン(オプション)
さまざまな認証方法(メールやパスワード、ソーシャルメディアアカウント、電話番号など)で取得した認証情報(credentials)でユーザーログインを処理するのに使用されます。
さまざまな認証方式を簡単に実装できるようにサポートし、GAMEPOTにログインできるようにします。
NBaseSDK.NBase.signInWithCredential(Provider.gamepot.ToString(), providerToken, (user, error) => {
if (error != null)
{
Debug.Log(error.Message.ToString());
return;
}
});
決済
決済の前に、ストア別環境設定にそのストアに合わせて設定する必要があります。
さらに、ダッシュボード > 決済 > In-Appにアイテムが追加されていない場合、「ProductID not found」というエラーが発生します。
iOS StoreKitの設定
Xcodeで、New Fileを利用して StoreKitを作成します。
Synced Todayの前にある更新ボタンをクリックすると、図のように Appleに登録された In-App情報が表示されます。
In-App情報の取得
決済の際は、画面に決済情報と現地の通貨情報を表示する必要があります。
以下の関数を使用すると現在の決済通貨や名前などを取得できます。正常に取得できない場合は、コンソール設定をご確認ください。
NBaseSDK.NBase.getProductItems(Store.google.ToString(), (products, error) =>
{
if (products != null && products.Count > 0)
{
// 製品リストをループします。
foreach (var product in products)
{
// 各製品の情報をトーストメッセージで表示します。
// 例では product.ToString()を呼び出していますが、
// 実際は productの具体的な属性(例: 名前、価格など)を表示できます。
NBaseSDK.NBase.showToast(product.ToString());
}
}
else
{
// 製品リストが空の場合、ユーザーに通知します。
NBaseSDK.NBase.showToast("製品リストが空です。");
}
});
- Callback
Key | Type | Description |
---|---|---|
Products[].Id | string | 製品の ID |
Products[].Name | string | 製品の名前 |
Products[].Price | double | 製品の価格 |
Products[].Description | string | 製品の説明 |
Products[].LocalizedPrice | string | 現地化された価格 |
Products[].Currency | string | 製品の通貨単位 |
決済リクエスト
取得した In-App情報にある Product IDで決済をリクエストできます。
NBaseSDK.NBase.purchase(Store.google.ToString(), [productId], [metadata], [options], (purchase, error) =>
{
if (error != null)
{
Debug.Log(error.Message.ToString());
return;
}
// 決済成功
});
- Parameter
Key | Type | Description | Required |
---|---|---|---|
ProductId | string | 商品 ID(ダッシュボード → 決済 → In-Appアイテム) | O |
Metadata | string | Metadata | X |
Options | string | 決済オプション機能 | X |
Key | Description |
---|---|
Store.google.ToString() | Google Play Store |
Store.one.ToString() | ONE Store |
Store.galaxy.ToString() | Galaxy Store |
Store.amazon.ToString() | Amazon Store |
Store.huawei.ToString() | Huawei Store |
- Callback
Key | Type | Description |
---|---|---|
storeId | string | ストアの固有 ID |
paymentId | string | 決済 ID |
iapVersion | string | In-App決済バージョン |
productId | string | 製品 ID |
billingKey | string | 請求キー |
signature | string | 署名 |
originalJson | string | オリジナル JSON |
orderId | string | 注文 ID |
developerPayload | string | 開発者ペイロード |
packageName | string | パッケージ名 |
isAcknowledged | bool | 確認の有無 |
purchaseState | int | 購入状態 |
purchaseTime | long | 購入時間 |
price | float | 価格 |
quantity | int | 数 |
currency | string | 通貨の単位 |
Unity Standaloneのご案内
Standaloneは Mac、Windows、Linux用ビルドを表します。
GAMEPOT SDKはクロスプラットフォームをサポートしますが、モバイルと Standaloneでサポートされる機能が異なります。下記表を参照して開発計画を立ててください。
Service | Android | iOS | Web | PC |
---|---|---|---|---|
ログイン | O | O | O | PCログイン後、Tokenを検証 |
決済 | O | O | O | PC決済に移動 |
お知らせ | O | O | O | O |
カスタマーサポート | O | O | O | O |
リーダーボード | O | O | O | O |
友達管理 | O | O | O | O |
プッシュ | O | O | X | X |
メンテナンス | O | O | O | O |
アップデート | O | O | O | O |
クーポン | O | O | O | O |
チャット | O | O | O | O |
データ保存場所 | O | O | O | 準備中 |
セキュリティ | O | O | X | 準備中 |
プレイヤー | O | O | O | 準備中 |
Webバージョンは GamePot 3.0 Typescriptバージョンにのみ提供される機能です。
Newtonsoft.Jsonクラッシュ
NBase Unity SDKは、APIリクエストのパースに Unityの Newtonsoft Jsonパッケージを使用します。Jsonは最も一般的に使用されるライブラリの1つであるため、プロジェクトに既に Jsonが存在して次のようなライブラリ重複エラーが発生する可能性があります。
この場合、Plugins/Standalone
パスにあるNewtonsoft.Json
ファイルを削除するか、プロジェクトに既にある Jsonライブラリを削除して Unityの Jsonを使用することができます。Unityの Jsonパッケージは Unityエンジンと一緒に動作するように修正され、IL2CPPを完璧にサポートするバージョンです。
トラブルシューティング
Q. UnityPlayerActivity.java uses or overrides a deprecated API.
A. Edit > Project Settings > Player > Publishing settings > Custom Properties Gradle Templateにチェックを入れてください。
Q. error:1E08010C:DECODER routines::unsupported
A. Google Authentication Keyが一致しない場合に発生する現象で、Google Play Storeガイドを参照してキーを正確に入力してください。
Q. ONE Storeや GAMEPOTベータのような公式 mavenアドレスは問題ありませんが、maven、jitpack.ioからはダウンロードできません。
Unityで以下のようなエラーが発生します。
Could not determine the dependencies of task ':unityLibrary:compileReleaseAidl'.
> Could not resolve all task dependencies for configuration ':unityLibrary:releaseCompileClasspath'.
> Could not find io.nbase:nbasesdk:0.0.71-beta.
Required by:
project :unityLibrary
public mavenを使用しないモジュールの場合、以下のように mavenアドレスを入力する必要があります。NBaseSDKDependenciesファイル設定時に mavenアドレスを入力してください。
<!-- # ONE Store -->
<androidPackage spec="com.onestorecorp.sdk:sdk-iap:21.01.00"/>
<repositories>
<repository>https://repo.onestore.co.kr/repository/onestore-sdk-public</repository>
</repositories>
</androidPackage>
<!-- # NBase Beta mavenリポジトリ -->
<androidPackage spec="io.nbase:nbasesdk:3.0.82"/>
<repositories>
<repository>https://repo.nbase.io/repository/nbase-releases/</repository>
</repositories>
</androidPackage>
jitpack.ioもアドレスを追加してください。
Q. minimum API Levelアップグレードのご案内
A. デフォルトの API Level 22から24にアップグレードしてください。
Q. Authorization failed: Error Domain=AKAuthenticationError Code=-7026
A. TARGETS > +Capabilityをクリックして Sign in with Appleを追加してください。
Q. Couldn't get credential from result.10: Developer console is not set up correctly
A. このエラーは、Google Cloud Console > ユーザー認証情報 > OAuth 2.0クライアント IDでウェブアプリケーションタイプのクライアント IDが設定されていないため発生する可能性があります。
Q. 16: Cannot find a matching credential.
A. この場合は、Google Cloud Console > ユーザー認証情報 > OAuth 2.0クライアント IDが登録されていないため発生する可能性があるエラーです。
Q. java.lang.NoClassDefFoundError: Failed resolution of: Lcom/android/billingclient/api/BillingClient;
A. 以下のコードを追加してください。
<androidPackage spec="com.android.billingclient:billing:6.1.0" />
Q. (iOS) アプリを実行するとクラッシュが発生し、「/AdapterProviderFacebook' (no such file)」エラーが確認される
A. Xcode TARGETS → General → Frameworks, Libraries, and Embedded Content → AdapterProviderFacebook.xcframeworkを追加してください。
Q. (iOS) 実行すると「/usr/lib/swift/NBase.framework/NBase' (no such file, not in dyld cache)」エラーが発生
A. 以下のように NBase.xcframeworkを追加してください。
Q. (iOS) iOS 18環境で「NSBundle file:///System/Library/Frameworks/Metal.framework/ principal class is nil because all fallbacks have failed」エラーが発生
A. Edit Schemeウィンドウを開き(ショートカット: CMD + SHIFT + ,)、以下のように Metal項目の API Validationからチェックを外してください。