Unity SDK

Prev Next

Classic/VPC環境で利用できます。

Unity環境向け GAMEPOT Unity SDKの使用方法をご案内します。SDKをインストールして環境を構成することで、ゲームとダッシュボードを連携できます。

システム要件

Unity用 GAMEPOT SDKを使用するためのシステム要件は、次の通りです。

  • Unity最低動作環境: 2022.3.44f1以降
  • 旧バージョンの Unityへの対応が必要な場合は、お問い合わせチャネルまでご連絡ください。

SDKのインストールと環境の構成

GAMEPOT Unity SDKをインストールしてから環境を構成し、GAMEPOTのダッシュボードとゲームを連携してゲーム開発に必要な機能を使用できます。

GAMEPOT SDKでサポートしている言語は次の通りです。

  • 韓国語、英語、イタリア語、タイ語、ベトナム語、日本語、中国語(簡体字/繁体字)、インドネシア語、ドイツ語、スペイン語、フランス語

GAMEPOT初期化時に登録した言語で自動表示されます。未対応の言語の場合は英語で表示されます。

SDKのインストール

次の手順に従って GAMEPOT Unity SDKをインストールし、Unityプロジェクトを構成します。

  1. Unity公式提供の GitHubから最新バージョンをダウンロードします。
  2. Unityで Assets > Import Package > Custom Package... メニューを順にクリックし、nbasesdk-unity-plugin-[version].unitypackageファイルを取り込みます。
    • GAMEPOT 3.0からは Mavenと CocoaPodsを通じてデプロイされ、デバイス別に簡単な設定で外部ライブラリと統合できます。
参考

iOSビルドの場合、正常に動作するには、CocoaPodsをインストールする必要があります。

External Dependency Manager for Unityを含めてインストールされ、簡単に Android、iOSパッケージをインストールできます。

NBase SDK Unity 3.0.18以降では、Tools > GamePotSDK > Dependency Managerメニューから、Androidおよび iOSで使用するモジュールを選択できます。Apply DependenciesをクリックするとAssets/NBaseSDK/Editor/NBaseSDKDependencies.xmlが更新され、Androidの依存関係の解決が実行されます。バージョンを直接指定する必要がある場合にのみ、Advanced Modeを使用してください。

Android Gradleの設定

Androidビルドに必要な Gradleの設定手順を、順に実行してください。

  1. Player Settingsの Publishing Settingsにて、Custom Main Gradle Templateと Custom Gradle Properties Templateを選択します。
    gamepot-UnitySDK01.png
  2. Minimum API Levelを24にアップグレードします。
    gamepot-UnitySDK02.png
  3. Assets > External Dependency Manager > Android Resolver > Settingsメニューを順にクリックし、Enable Auto-Resolutionと Explode AARs項目からチェックを外します。
    gamepot-UnitySDK03.png
  4. Tools > GamePotSDK > Dependency Managerを開いて使用する Androidモジュールを選択し、Apply Dependenciesをクリックします。

Dependency Managerで提供されていないモジュールを追加する場合は、Assets/NBaseSDK/Editor/NBaseSDKDependencies.xmlを直接編集できます。以下は、NBase SDKの使用に基本的に必要な依存パッケージを定義した例です。

Dependency modulesとは
外部 SDKを使用するためのモジュールです。Googleログインの場合、io.nbase:nbase-adapter-provider-googleのようにアダプターとして提供されるモジュールを一緒にインストールする必要があります。

XML例:

<?xml version="1.0" encoding="UTF-8"?>
<dependencies>
    <androidPackages>
        <androidPackage spec="io.nbase:nbasesdk:3.0.98"/>
    </androidPackages>
    <iosPods>
        <iosPod name="NBase" version="3.0.67" minTargetSdk="15.1" />
    </iosPods>
</dependencies>
  • Googleログインと Google Play Store決済を使用する場合

XML例:

<dependencies>
    <androidPackages>
        <androidPackage spec="io.nbase:nbasesdk:3.0.98"/>
        <androidPackage spec="io.nbase:nbase-adapter-provider-google:3.0.13"/>
        <androidPackage spec="io.nbase:nbase-adapter-billing-googleplay:3.0.12" />
    </androidPackages>
    <iosPods>
        <iosPod name="NBase" version="3.0.67" minTargetSdk="15.1" />
        <iosPod name="NBaseAdapterProviderGoogle" version="3.0.58" minTargetSdk="15.1" />
    </iosPods>
</dependencies>

対応可能な AOS依存モジュールは次の通りです。

Name Description Dependency modules
io.nbase:nbasesdk GAMEPOT基本モジュール X
io.nbase:nbase-adapter-provider-google Googleログイン X
io.nbase:nbase-adapter-provider-apple Appleログイン X
io.nbase:nbase-adapter-provider-facebook Facebookログイン com.facebook.android:facebook-login:latest.release
io.nbase:nbase-adapter-provider-kakao Kakaoログイン X
io.nbase:nbase-adapter-provider-line LINEログイン X
io.nbase:nbase-adapter-provider-naver NAVERログイン X
io.nbase:nbase-adapter-provider-huawei Huaweiログイン X
io.nbase:nbase-adapter-provider-playgame Google Play Gamesログイン X
io.nbase:nbase-adapter-provider-x Xログイン X
io.nbase:nbase-adapter-billing-googleplay Google Play Store com.android.billingclient:billing:8.0.0
io.nbase:nbase-adapter-billing-onestore ONE Store X
io.nbase:nbase-adapter-billing-galaxy Galaxy Store X
io.nbase:nbase-adapter-billing-huawei Huawei Store X

メール、ゲストログインの場合は基本モジュールに適用されています。

Dependency Managerが Android依存関係の解析を自動的に実行できない場合は、Unityエディタで Assets > External Dependency Manager > Android Resolver > Force Resolveをクリックしてください。

Dependencies.xmlを構成した後に Force Resolveを実行すると mainTemplate.gradleファイルで定義した内容が implementationとして自動適用されます。この設定が完了しない場合、ビルド時に必要な関連ライブラリーはダウンロードできません。

iOSの設定

Tools > GamePotSDK > Dependency Managerを開いて使用する iOSモジュールを選択し、Apply Dependenciesをクリックします。

Dependency Managerで提供されていない Podを追加する場合は、Assets/NBaseSDK/Editor/NBaseSDKDependencies.xmlのiosPodsセクションを直接編集できます。

XML例:

<?xml version="1.0" encoding="UTF-8"?>
<dependencies>
	<androidPackages>
        ...
	</androidPackages>
    <iosPods>
		<iosPod name="NBase" version="3.0.67" minTargetSdk="15.1" />
    </iosPods>
</dependencies>

Firebaseのように必要なフレームワークをインストールしたい場合にも、以下のように別途追加します。

XML例:

<iosPods> 
       ...
        <iosPod name="FirebaseMessaging" version="10.20.0" minTargetSdk="15.1" />
        <iosPod name="Firebase/Analytics" version="10.15.0" minTargetSdk="15.1" />
        ...
</iosPods>

CocoaPodsがインストールされていない場合は、
Unityエディタにて、Assets > External Dependency Manager > iOS Resolver > Install Cocoapodsをクリックします。

注意

Unityプロジェクトを iOS用にビルドすると Unity-iPhone.xcworkspace ファイルが作成されます。このファイルを開いてください。
Unity-iPhone.xcodeprojの代わりに Unity-iPhone.xcworkspace ファイルを開かないと CocoaPodsの依存関係は使用されません。
Unity 2021からは自動的にそのプロジェクトが選択されます。

サポートされている iOS依存モジュールは次の通りです。

Name Description Dependency modules
NBase GAMEPOT基本モジュール X
NBaseAdapterProviderGoogle Googleログイン X
NBaseAdapterProviderFacebook Facebookログイン FBSDKLoginKit (17.4.0)
NBaseAdapterProviderGameCenter ゲームセンターログイン X
NBaseAdapterProviderNaver NAVERログイン X
NBaseAdapterProviderLine LINEログイン X
NBaseAdapterProviderKakao Kakaoログイン X
NBaseAdapterProviderX Xログイン X
注意

一部の依存フレームワークは Swift Package Managerを通じてのみ追加できます。

以下は、Swift Package Managerで追加が必要な、必須の依存フレームワークを手動で追加する方法です。

  1. Xcodeでプロジェクト設定に移動し、Package Dependencies設定に進みます。
    gamepot-UnitySDK05.png

  2. 右上の URL入力欄にhttps://github.com/apollographql/apollo-ios.gitを追加して検索し、apollo-iosを選択した後、Add Packageで追加します。

  3. 表示されるモーダル内の Apolloと ApolloAPIモジュールをプロジェクトのメインターゲット(Unity-iPhone)に追加します。
    gamepot-UnitySDK06.png

    以下の表は、Swift Package Managerで追加する依存モジュールを説明します。

    Name Dependency modules Location Version Framework
    NBase Apollo https://github.com/apollographql/apollo-ios.git 1.15.2 Apollo, ApolloAPI

事前準備

GAMEPOT Unity SDKを適用する前に必要な必須設定項目を次の通りご確認ください。

  1. プロジェクト IDとプロジェクトキーはダッシュボード > プロジェクトの設定からコピーします。
  2. ログイン、ストア、連携の環境設定はダッシュボード > プロジェクトの設定にて追加したり変更したりします。
  3. ログイン別にログイン手段別環境設定を参照し、コンソールに設定してダッシュボードに追加します。
  4. In-App決済の前に、ストア別環境設定を参照し、コンソールに設定してダッシュボードに追加します。
  5. In-App決済の前に、決済ストアごとにダッシュボード > 決済 > In-App にてアイテムを登録します。

リセット

リセットを実行するには、ゲームを始める際にロードされる最初の画面に使用されるインスタンスに、以下のコードを追加します。

C# 例:

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());
       });
     }
 }
  • Parameters

次の表は、初期化に必要なパラメータを説明します。

Key Type Description Required
projectId String ダッシュボード → プロジェクトの設定で確認したプロジェクト ID O
projectKey String ダッシュボード → プロジェクトの設定で確認したプロジェクトキー O
storeId String 以下の表のストア識別子 O
language String 言語コード(en、ko、jaなど) O
region String リージョンコード(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
Store.pc.ToString() PCストア
Store.steam.ToString() Steamストア
  • Callback

次の表は、初期化コールバックに渡される情報を説明します。

Key Type Description
Status bool 状態
Language string 言語
Country string 国
RemoteIp string IP
Platform string プラットフォーム
Sandbox bool サンドボックスかどうか

初期化 (イベントの受信)

はじめに NBaseイベントを受信するスクリプトを作成します。
このスクリプトは NBaseListenerと呼ばれ、シーンのどんなオブジェクトにも配置できます。このオブジェクトが永続的に存在するように DontDestroyOnLoadメソッドを呼び出すことをお勧めします。

下図は、シーンに NBaseListenerスクリプトを構成する例を示しています。
gamepot-UnitySDK09.png

C# 例:

using UnityEngine;
using NBaseSDK;
public class NBaseListener: MonoBehaviour, NBaseEventListener
{
	void Start()
	{
        DontDestroyOnLoad(this.gameObject);
        NBaseSDK.NBase.SetEventListener(this);
    }	
}

ログイン機能

ログイン機能を利用し、さまざまな認証方法でユーザーを認証する方法について説明します。

ログイン機能の使用

開発会社で実装したログイン UIにより、ログインボタンをクリックしたときに動作する SDKログイン機能を使用するには、以下のコードを使用します。これが正常に動作するには、ログインに必要なコンソールとダッシュボードの設定がすべて完了している必要があります。

C# 例:

NBaseSDK.NBase.signIn(Provider.google.ToString(), (user, error) => {
    if (error != null)
    {
        if (error.Code == NBaseSDK.NBase.ErrorCode.MEMBER_WITHDRAW) // Withdrawal status
        {
            // Withdrawal
            Debug.Log(error.Message.ToString());    // Withdrawal message
        }
        else if (error.Code == NBaseSDK.NBase.ErrorCode.SERVICE_MAINTENANCE) // Maintenance
        {
            Debug.Log(error.Message.ToString());    // Maintenance message
            // case 1: Use in-game popup implemented directly by the developer
            // case 2: Call the code below to use the SDK's own popup
            // NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
            //     // Popup handling
            // });
        }
        else if (error.Code == NBaseSDK.NBase.ErrorCode.UPDATE_REQUIRED) // Update
        {
            Debug.Log(error.Message.ToString());    // Update message
            // case 1: Use in-game popup implemented directly by the developer
            // case 2: Call the code below to use the SDK's own popup
            // NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
            //     // Popup handling
            // });
        }
        else if (error.Code == NBaseSDK.NBase.ErrorCode.MEMBER_BANNED) // Access blocked
        {
            Debug.Log(error.Message.ToString());    // Block message
        }
        else 
        {
            // signIn Failed
            Debug.Log(error.Message.ToString());
        }
    }
    else
    {
        // signIn Success
        Debug.Log(user.ToString());
    }
    return;
});

アップデートまたはメンテナンス時に SDKが提供する独自のポップアップを使用する場合、以下のコードを追加します。

C# 例:

NBaseSDK.NBase.showAppStatusPopup(appStatus, (status, error) =>
{
    bool shouldClose = false;
    bool shouldNext = false;
    var closeValue = status.Close; 
    var nextValue = status.Next;

    if (closeValue != null)
    {
        if (bool.TryParse(closeValue.ToString(), out bool result))
        {
            shouldClose = result;
        }
    }

    if (shouldClose)
    {
        // App Close
    }

    if (nextValue != null)
    {
        if (bool.TryParse(nextValue.ToString(), out bool result))
        {
            shouldNext = result;
        }
    }

    if (shouldNext)
    {
        // Next, Optional update
    }
});
  • Provider

次の表は、ログイン機能で使用するサービスタイプを説明します。

Key Description
Provider.google.ToString() Google
Provider.anonymous.ToString() ゲスト
Provider.facebook.ToString() Facebook
Provider.apple.ToString() Apple
Provider.kakao.ToString() Kakao
Provider.googleplay.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
  • User

次の表は、Userオブジェクトのフィールドを説明します。

Key Type Description
Id string ユーザーの固有 ID
SocialId string ソーシャル ID
Name string 氏名 (提供してくれる場合)
Email string メール (提供してくれる場合)
Token string トークン
Age int 年齢 (提供してくれる場合)
Profile string プロファイル (提供してくれる場合)
CustomField string カスタムフィールド
IsSignUp bool 会員登録しているかどうか
AppStatus AppStatus メンテナンス/アップデート状態

AppStatus

次の表は、AppStatusオブジェクトのフィールドを説明します。

Key Type Description
Message string メッセージ
StartedAt long 開始時間
EndedAt long 終了時間
CurrentAppVersion string 現在のアプリバージョン
UpdateAppVersion string アップデート後のアプリバージョン
CurrentAppVersionCode string 現在のアプリバージョンコード
UpdateAppVersionCode string アップデート後のアプリバージョンコード
IsForce bool 強制アップデートかどうか
Url string メンテナンス/アップデートが登録された URL

SDK独自提供のログイン UI

GAMEPOT SDKが提供する完成された形のログイン UIを使用できます。
SDKが提供するログイン UIを呼び出すには、以下のコードを使用します。

C# 例:

NBaseSDK.NBase.openSignInUI((user, error) => {
    if (error != null)
    {
        if (error.Code == NBaseSDK.NBase.ErrorCode.MEMBER_WITHDRAW) // Withdrawal status
        {
            // Withdrawal
            Debug.Log(error.Message.ToString());    // Withdrawal message
        }
        else if (error.Code == NBaseSDK.NBase.ErrorCode.SERVICE_MAINTENANCE) // Maintenance
        {
            Debug.Log(error.Message.ToString());    // Maintenance message
            // case 1: Use in-game popup implemented directly by the developer
            // case 2: Call the code below to use the SDK's own popup
            // NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
            //     // Popup handling
            // });
        }
        else if (error.Code == NBaseSDK.NBase.ErrorCode.UPDATE_REQUIRED) // Update
        {
            Debug.Log(error.Message.ToString());    // Update message
            // case 1: Use in-game popup implemented directly by the developer
            // case 2: Call the code below to use the SDK's own popup
            // NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
            //     // Popup handling
            // });
        }
        else if (error.Code == NBaseSDK.NBase.ErrorCode.MEMBER_BANNED) // Access blocked
        {
            Debug.Log(error.Message.ToString());    // Block message
        }
        else 
        {
            // signIn Failed
            Debug.Log(error.Message.ToString());
        }
    }
    else
    {
        // signIn Success
        Debug.Log(user.ToString());
    }
    return;
});

自動ログイン(オプション)

初期化の後、最後にログインした認証手段で自動ログインを試行することができます。自動ログインを試行する前に、最終ログイン Providerタイプの確認をお勧めします。

C# 例:

// 最終ログイン Providerタイプを確認
string lastProviderType = NBaseSDK.NBase.getLastProviderType();

if (lastProviderType != Provider.none.ToString())
{
    // 最終ログイン情報がある場合にのみ自動ログインを試行
    NBaseSDK.NBase.signInLastLoggedIn((user, error) => {
        if (error != null)
        {
            if (error.Code == NBaseSDK.NBase.ErrorCode.MEMBER_WITHDRAW) // Withdrawal status
            {
                // Withdrawal
                Debug.Log(error.Message.ToString());    // Withdrawal message
            }
            else if (error.Code == NBaseSDK.NBase.ErrorCode.SERVICE_MAINTENANCE) // Maintenance
            {
                // Maintenance
                Debug.Log(error.Message.ToString());    // Maintenance message
                /* case 1: Use in-game popup implemented directly by the developer
                case 2: Call the code below to use the SDK's own popup
                NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
                    // Popup handling
                });
                */
            }
            else if (error.Code == NBaseSDK.NBase.ErrorCode.UPDATE_REQUIRED) // Update
            {
                // Update
                Debug.Log(error.Message.ToString());    // Update message
                /* case 1: Use in-game popup implemented directly by the developer
                case 2: Call the code below to use the SDK's own popup
                NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
                    // Popup handling
                });
                */
            }
            else if (error.Code == NBaseSDK.NBase.ErrorCode.MEMBER_BANNED) // Access blocked
            {
                // Access blocked
                Debug.Log(error.Message.ToString());    // Block message
            }
            else
            {
                // signIn Failed
                Debug.Log(error.Message.ToString());
            }
        }
        else
        {
            // signIn Success
            Debug.Log(user.ToString());
        }
    });
}
else
{
    // 最終ログイン情報なし
    Debug.Log("No last login provider found");
}

getLastProviderType() メソッドは、最後にログインした Providerタイプを返します。

signInLastLoggedIn() メソッドは、最後にログインした認証手段で自動ログインを試みます。

  • Callback

次の表は、自動ログインコールバックに渡される値を説明します。

Key Type Description
user User ログイン成功時のユーザー情報
error Error ログイン失敗時のエラー情報

ログアウト

GAMEPOTユーザーアカウントからログアウトするには、以下のコードを使用してください。

C# 例:

NBaseSDK.NBase.signOut((status, error) => {
    if (error != null)
    {
        // signOut Failed
        Debug.Log("signOut Failed: " + error.Message.ToString());
    }
    else
    {
        // signOut Success
        Debug.Log("signOut Success: " + status.ToString());
        // ログアウト成功後の処理ロジック
    }
});
  • Callback

次の表は、ログアウトコールバックに渡される値を説明します。

Key Type Description
status Boolean 成功したかどうか
error Error ログアウト失敗時のエラー情報

退会

SDK退会機能を使用するには、以下のコードを使用します。

C# 例:

NBaseSDK.NBase.deleteMember(providerId, (status, error) => {
    if (error != null)
    {
        // deleteMember Failed
        Debug.Log("deleteMember Failed: " + error.Message.ToString());
    }
    else
    {
        // deleteMember Success
        Debug.Log("deleteMember Success: " + status.ToString());
        // 退会成功後の処理ロジック
    }
});
  • Parameters

次の表は、退会時に渡すべきパラメータを説明します。

Key Type Description Required
providerId String ログインした Providerタイプ (例: Provider.google.ToString()、Provider.anonymous.ToString()など) O
  • Callback

次の表は、退会コールバックの値を説明します。

Key Type Description
status Boolean 成功したかどうか
error Error 退会失敗時のエラー情報

独自の IDパスワード認証 (オプション)

ユーザーがメールアドレスとパスワードを使用してログインできるようにする認証メソッドです。ユーザーのメールアドレスとパスワードに基づいてユーザー認証を行います。

C# 例:

NBaseSDK.NBase.signInWithPassword(username, password, (user, error) => {
    if (error != null)
    {
        Debug.Log(error.Message.ToString());
        return;
    }
});

認証情報でログイン (オプション)

外部から取得したソーシャルアカウントの認証情報(Access Token)を使用してログインするには、以下のコードを使用します。

C# 例:

NBaseSDK.NBase.signInWithCredential(Provider.google.ToString(), providerToken, (user, error) => {
    if (error != null)
    {
        if (error.Code == NBaseSDK.NBase.ErrorCode.SERVICE_MAINTENANCE) // Maintenance
        {
            // Maintenance
            Debug.Log("Maintenance: " + error.Message.ToString());
            /* case 1: Use in-game popup implemented directly by the developer
            case 2: Call the code below to use the SDK's own popup
            NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
                // Popup handling
            });
            */
        }
        else if (error.Code == NBaseSDK.NBase.ErrorCode.UPDATE_REQUIRED) // Update
        {
            // Update
            Debug.Log("Update: " + error.Message.ToString());
            /* case 1: Use in-game popup implemented directly by the developer
            case 2: Call the code below to use the SDK's own popup
            NBaseSDK.NBase.showAppStatusPopup(user?.AppStatus, (status, error) => {
                // Popup handling
            });
            */
        }
        else
        {
            // signInWithCredential Failed
            Debug.Log("signInWithCredential Failed: " + error.Message.ToString());
        }
    }
    else
    {
        // signInWithCredential Success
        Debug.Log("signInWithCredential Success: " + user.ToString());
    }
});
  • Parameter

次の表は、認証情報ログインに必要なパラメータを説明します。

Key Type Description Required
provider String Provider ID (例: Provider.google.ToString()、Provider.facebook.ToString()など) O
providerToken String ソーシャルアカウントの Access Token O
  • Callback

次の表は、認証情報ログインコールバックの値を説明します。

Key Type Description
user User ログイン成功時のユーザー情報
error Error ログイン失敗時のエラー情報

外部アカウント連携機能

GAMEPOTユーザーアカウントに外部ソーシャルアカウントを連携して管理する機能を説明します。

参考

Unity Standaloneの外部アカウント連携機能は、NBase SDK Unity 3.0.18以降で使用できます。

  • 対応するプラットフォーム: Windows、macOS、Linux Standalone
  • 対応する Provider: Steam
  • 対応する API: createLinking、getLinkedLists、deleteLinking
  • 対応していない API: updateLinking

StandaloneでcreateLinkingを呼び出すには、Steamworks.NETがインストールされており、STEAMWORKS_NETスクリプティング定義シンボルが有効化されている必要があります。ゲーム側で Steam APIを初期化し、SteamAPI.RunCallbacks()も継続して呼び出す必要があります。NBase SDKは Steam APIの直接的な初期化や終了処理を行いません。

外部アカウント連携機能の使用

現在の GAMEPOTユーザーアカウントと別のソーシャルアカウントを連携するには、以下のコードを使用します。

C# 例:

NBaseSDK.NBase.createLinking(Provider.google.ToString(), (linkingId, error) => {
    if (error != null)
    {
        // createLinking Failed
        Debug.Log("createLinking Failed: " + error.Message.ToString());
    }
    else
    {
        // createLinking Success
        Debug.Log("createLinking Success: " + linkingId);
        // アカウント連携成功後の処理ロジック
    }
});
  • Parameter

次の表は、アカウント連携に必要なパラメータを説明します。

Key Type Description Required
providerId String 連携対象の Providerタイプ (例: Provider.google.ToString()、Provider.facebook.ToString()など) O
  • Callback

次の表は、アカウント連携コールバックの値を説明します。

Key Type Description
linkingId String 連携成功時に返される連携 ID
error Error 連携失敗時のエラー情報

Unity Standaloneで Steamアカウント連携

ログインしている GAMEPOTユーザーアカウントに現在の Steamクライアントのアカウントを連携するには、以下の手順で設定および呼び出しを行ってください。

  1. Steamworks.NETを Unityプロジェクトにインストールします。
  2. Steamworks App IDと Web API Keyを GAMEPOTダッシュボードの Steam連携設定に登録します。
  3. ローカルテスト時、steam_appid.txtに Steamworks App IDを入力します。ビルドした実行ファイルを Steam外部から直接実行する場合は、このファイルを実行ファイルと同じフォルダに配置します。リリースビルドにはテスト用のsteam_appid.txtを含めないでください。
  4. Steamクライアントにログインした状態で Steam APIを初期化します。
  5. GAMEPOTログインを完了し、Provider.steamでcreateLinkingを呼び出します。

C# 例:

NBaseSDK.NBase.createLinking(Provider.steam.ToString(), (linkingId, error) => {
    if (error != null)
    {
        Debug.LogError($"Steam account linking failed: {error.Code} / {error.Message}");
        return;
    }

    Debug.Log($"Steam account linking succeeded: {linkingId}");
});

StandaloneのcreateLinkingは現在 SteamProviderのみをサポートしています。Google、Appleなどの Providerを渡すと、エラーのコールバックが返されます。Steamworks.NETがインストールされていない場合、Steam APIが初期化されていない場合、Steamクライアントにログインしていない場合または認証チケットの発行に失敗した場合も、成功として処理されず、errorとして返されます。

連携が成功した後は、返されたlinkingIdを保存しておくか、getLinkedListsで再度照会することができます。連携解除の際は Provider文字列ではなく、この連携 IDを渡します。

連携リストの確認

現在の GAMEPOTユーザーアカウントと連携されたソーシャルアカウントリストを確認するには、以下のコードを使用します。Unity Standaloneでも同じ APIを使用します。

C# 例:

NBaseSDK.NBase.getLinkedLists((linkings, error) => {
    if (error != null)
    {
        // getLinkedLists Failed
        Debug.Log("getLinkedLists Failed: " + error.Message.ToString());
    }
    else
    {
        // getLinkedLists Success
        if (linkings == null || linkings.Count == 0)
        {
            Debug.Log("No linked accounts");
            return;
        }

        foreach (NBaseSDK.NBase.Linking linking in linkings)
        {
            Debug.Log($"getLinkedLists Success: {linking.Provider} / {linking.Id}");
        }
    }
});
  • Callback

次の表は、アカウント連携リストの確認時に提供される値を説明します。

Key Type Description
linkings List 連携されたアカウントリスト
error Error リスト照会失敗時ののエラー情報
  • Linking

次の表は、Linkingオブジェクトのフィールドを説明します。

Key Type Description
Id String 連携 ID (アカウント連携解除時に使用)
Username String ソーシャル ID
Provider String ソーシャル Providerタイプ

連携解除

現在の GAMEPOTユーザーアカウントから特定のソーシャルアカウント連携を解除するには、以下のコードを使用します。Unity Standaloneでも同様の APIを使用し、getLinkedListsで確認したLinking.Idを渡します。

C# 例:

NBaseSDK.NBase.deleteLinking(linkingId, (status, error) => {
    if (error != null)
    {
        // deleteLinking Failed
        Debug.Log("deleteLinking Failed: " + error.Message.ToString());
    }
    else if (status)
    {
        // deleteLinking Success
        Debug.Log("deleteLinking Success: " + status.ToString());
        // 連携解除成功後の処理ロジック
    }
    else
    {
        Debug.LogWarning("deleteLinking returned false");
    }
});
  • Parameter

次の表は、アカウント連携解除に必要なパラメータを説明します。

Key Type Description Required
linkingId String 解除対象の連携 ID (createLinkingまたは getLinkedListsから取得) O
  • Callback

次の表は、アカウント連携解除コールバックの値を説明します。

Key Type Description
status Boolean 成功したかどうか
error Error 連携解除失敗時のエラー情報

アプリ状態の確認

現在のクライアントのメンテナンス/アップデート状態を確認するには、以下のコードをご利用ください。

C# 例:

NBaseSDK.NBase.checkAppStatus((status, error) =>
{
    if (error != null)
    {
        Debug.LogError("checkAppStatus Failed: " + error.Message);
        return;
    }

    switch(status.State)
    {
        case NBaseSDK.NBase.AppStatus.Status.SUCCESS:
            // SUCCESS
            break;
        case NBaseSDK.NBase.AppStatus.Status.FAILED:
            // FAILED
            break;
        case NBaseSDK.NBase.AppStatus.Status.MAINTENANCE:
            // Maintenance
            /* case 1: Use in-game popup implemented directly by the developer
            case 2: Call the code below to use the SDK's own popup
            NBaseSDK.NBase.showAppStatusPopup(status, (popupStatus, popupError) => {
                // Popup handling
            });
            */
            break;
        case NBaseSDK.NBase.AppStatus.Status.UPDATE:
            // Update
            /* case 1: Use in-game popup implemented directly by the developer
            case 2: Call the code below to use the SDK's own popup
            NBaseSDK.NBase.showAppStatusPopup(status, (popupStatus, popupError) => {
                // Popup handling
            });
            */
            break;
    }
});

Unity Standaloneのご案内

Standaloneは Mac、Windows、Linux用ビルドを表します。
GAMEPOT SDKはクロスプラットフォームをサポートしますが、モバイルと Standaloneでサポートされる機能が異なります。下記表を参照して開発計画を立ててください。

Service Android iOS Web PC 備考
ログイン O O O PCログイン後、トークンを検証
決済 O O O PC決済ページに移動
お知らせ O O O O UIを除くリスト照会を提供
カスタマーサポート O O O O PCに移動
リーダーボード 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 O X 準備中
プレイヤー O O O O
外部アカウントとの連携 O O X O PCは Steamのみ対応 (NBase SDK Unity 3.0.18以降)
参考

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. minimum API Levelアップグレードのご案内
A. 基本 API Levelを22から24にアップグレードしてください。
下図は API Levelを調整する場所を示しています。
gamepot-UnitySDK13.png

Q. Authorization failed: Error Domain=AKAuthenticationError Code=-7026
A. TARGETS > +Capabilityをクリックして Sign in with Appleを追加してください。
下図は、Sign in with Apple機能を追加する画面を示しています。
gamepot-UnitySDK14.png

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. 以下のコードを追加してください。

XML例:

<androidPackage spec="com.android.billingclient:billing:8.0.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を追加してください。
下図は、NBase.xcframeworkをプロジェクトに追加する手順を示しています。

gamepot-UnitySDK07.png

gamepot-UnitySDK08.png

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からチェックを外してください。
下図は、Metal API Validationオプションを無効化する場所を示しています。

gamepot-UnitySDK15.png