NAV
Unity Unreal Engine 4

GS2-Showcase

GS2-SDK for Game Engine のリファレンス

ゲームエンジン向けSDKモデル

EzSalesItem

商品は陳列棚に陳列するためのエンティティです。 商品を購入するために必要となる対価と商品を購入したときに得られる報酬を設定します。

説明
name string 商品名
metadata string メタデータ
consumeActions ConsumeAction[] 消費アクションリスト
acquireActions AcquireAction[] 入手アクションリスト

EzSalesItemGroup

商品グループは陳列棚に陳列するためのエンティティです。 商品グループには複数の商品を所属させることができ、所属している商品の先頭から順番に購入可能かを判定し、一番最初に購入可能だと判定された商品が実際に陳列されます。 初回のみ割引する商品や、ステップアップガチャのように購入回数によって商品の内容が変化する仕組みに使用できます。

説明
name string 商品グループ名
metadata string メタデータ
salesItems SalesItem[] 商品リスト

EzShowcase

陳列棚は登録した商品を販売するために陳列するエンティティです。 陳列棚には販売期間を設定できます。

説明
name string 商品名
metadata string メタデータ
displayItems DisplayItem[] インベントリに格納可能なアイテムモデル一覧

EzDisplayItem

説明
displayItemId string 陳列商品ID
type string 種類
salesItem SalesItem 陳列する商品
salesItemGroup SalesItemGroup 陳列する商品グループ

EzConfig

説明
key string 名前
value string

EzConsumeAction

説明
action string スタンプタスクで実行するアクションの種類
request string 入手リクエストのJSON

EzAcquireAction

説明
action string スタンプシートで実行するアクションの種類
request string 消費リクエストのJSON

メソッド

buy

buy

ProfilePtr = std::make_shared<gs2::ez::Profile>(
    TCHAR_TO_ANSI(*ClientId),
    TCHAR_TO_ANSI(*ClientSecret),
    gs2::ez::Gs2BasicReopener()
);

ClientPtr = std::make_shared<gs2::ez::Client>(
    *ProfilePtr
);

ProfilePtr->initialize(
    [this](gs2::ez::Profile::AsyncInitializeResult r)
    {
        if (r.getError())
        {
            GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, "profile.initialize failed.");
        }
        else
        {
            AccountCreate();
        }
    }
);

// Up to this line is the initialization process.

ClientPtr->showcase.buy(
    [](gs2::ez::account::AsyncEzBuyResult r)
    {
        if (r.getError())
        {
            GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, "showcase.buy failed.");
        }
        else
        {
            Item = r.getResult()->getItem();
            StampSheet = r.getResult()->getStampSheet();
            StampSheetEncryptionKeyId = r.getResult()->getStampSheetEncryptionKeyId();
        }
    },
    ProfilePtr->getGs2Session(),
    TCHAR_TO_ANSI("namespace1"), // namespaceName
    TCHAR_TO_ANSI("showcase-0001"), // showcaseName
    TCHAR_TO_ANSI("display-item-0001") // displayItemId,
    null // config
);
using Gs2.Core.AsyncResult;
using Gs2.Gs2Account.Unity.Result;
using Gs2.Unity.Util;

var profile = new Profile(
    clientId: "your client id",
    clientSecret: "your client secret",
    reopener: new Gs2BasicReopener()
);

{
    AsyncResult<object> asyncResult = null;

    var current = profile.Initialize(
        r => { asyncResult = r; }
    );

    yield return current;

    if (asyncResult.Error != null)
    {
        OnError(asyncResult.Error);
        yield break;
    }
}

// Up to this line is the initialization process.

var gs2 = new Gs2.Unity.Client(profile);

{
    AsyncResult<EzBuyResult> asyncResult = null;
    var current = gs2.Showcase.Buy(
        callback: r => { asyncResult = r; },
        session: session,
        namespaceName: "namespace1",
        showcaseName: "showcase-0001",
        displayItemId: "display-item-0001",
        config: null
    );

    yield return current;
    if (asyncResult.Error != null)
    {
        OnError(asyncResult.Error);
        yield break;
    }

    var result = asyncResult.Result;
    var item = result.Item;
    var stampSheet = result.StampSheet;
    var stampSheetEncryptionKeyId = result.StampSheetEncryptionKeyId;
}

商品を購入します

Request

必須 デフォルト 値の制限 説明
namespaceName string ~ 32文字 ネームスペース名
showcaseName string ~ 128文字 商品名
accessToken string ~ 128文字 ユーザーID
displayItemId string UUID ~ 36文字 陳列商品ID
config Config[] [] 設定値

Result

説明
item SalesItem 商品
stampSheet string 購入処理の実行に使用するスタンプシート
stampSheetEncryptionKeyId string スタンプシートの署名計算に使用した暗号鍵GRN

getShowcase

getShowcase

ProfilePtr = std::make_shared<gs2::ez::Profile>(
    TCHAR_TO_ANSI(*ClientId),
    TCHAR_TO_ANSI(*ClientSecret),
    gs2::ez::Gs2BasicReopener()
);

ClientPtr = std::make_shared<gs2::ez::Client>(
    *ProfilePtr
);

ProfilePtr->initialize(
    [this](gs2::ez::Profile::AsyncInitializeResult r)
    {
        if (r.getError())
        {
            GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, "profile.initialize failed.");
        }
        else
        {
            AccountCreate();
        }
    }
);

// Up to this line is the initialization process.

ClientPtr->showcase.getShowcase(
    [](gs2::ez::account::AsyncEzGetShowcaseResult r)
    {
        if (r.getError())
        {
            GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, "showcase.getShowcase failed.");
        }
        else
        {
            Item = r.getResult()->getItem();
        }
    },
    ProfilePtr->getGs2Session(),
    TCHAR_TO_ANSI("namespace1"), // namespaceName
    TCHAR_TO_ANSI("showcase-0001") // showcaseName
);
using Gs2.Core.AsyncResult;
using Gs2.Gs2Account.Unity.Result;
using Gs2.Unity.Util;

var profile = new Profile(
    clientId: "your client id",
    clientSecret: "your client secret",
    reopener: new Gs2BasicReopener()
);

{
    AsyncResult<object> asyncResult = null;

    var current = profile.Initialize(
        r => { asyncResult = r; }
    );

    yield return current;

    if (asyncResult.Error != null)
    {
        OnError(asyncResult.Error);
        yield break;
    }
}

// Up to this line is the initialization process.

var gs2 = new Gs2.Unity.Client(profile);

{
    AsyncResult<EzGetShowcaseResult> asyncResult = null;
    var current = gs2.Showcase.GetShowcase(
        callback: r => { asyncResult = r; },
        session: session,
        namespaceName: "namespace1",
        showcaseName: "showcase-0001"
    );

    yield return current;
    if (asyncResult.Error != null)
    {
        OnError(asyncResult.Error);
        yield break;
    }

    var result = asyncResult.Result;
    var item = result.Item;
}

商品棚を取得します

Request

必須 デフォルト 値の制限 説明
namespaceName string ~ 32文字 ネームスペース名
accessToken string ~ 128文字 ユーザーID
showcaseName string ~ 128文字 商品名

Result

説明
item Showcase 陳列棚