UnityでオンチェーンアイテムのPrimary Saleを行う方法
このガイドでは、SequenceのUnity SDKを使ったPrimary Saleの作成方法を説明します。
ゲーム内ショップでアイテムを直接プレイヤーに販売することで、ゲームの成長を加速しましょう。このガイドでは、ERC1155 コントラクトのゲームアイテムを利用したインゲームショップで、任意のカスタム通貨や既存通貨を使って Primary Sale コントラクトをデプロイする手順を解説します。Sequence プラットフォームの以下の技術を使用します。
- Primary Sales Contract:WebショップやNFTドロップなど、プライマリセールを開始するためのコントラクトの設定・デプロイ方法。
- Sequence Indexer:Sequence Indexerを活用してNFTメタデータやユーザーのウォレット資産を取得。
1. Sequence Builder で独自のトークン・セールコントラクトをデプロイ
まず、販売したいゲームアイテムを格納する ERC1155 コントラクトと、Primary Sales コントラクトが必要です。手順についてはこちらのガイドをご覧ください。
2. Sequence の Unity SDK で Primary Sales デモを利用
まず、Sequence の Unity SDK をプロジェクトにインポートします。その後、Sequence Embedded Wallet SDK/Sequence/Samples/DemoScene
内の Demo.unity
シーンに移動してください。このシーンには、PrimarySalePage
オブジェクトが参考として配置されています。
3. プロジェクトで販売設定を行う
PrimarySalePage
オブジェクトを使って販売情報を入力し、設定を行います。設定セクションには以下のオプションがあります。
- チェーン:コントラクトをデプロイしたチェーンを選択します。
- トークン & セールコントラクトアドレス:Sequence Builder で発行されたコントラクトアドレスを入力します。
- 販売アイテム:販売するトークンIDをすべてリストアップします。
4. SDK と連携するカスタムコードの実装
販売の状態を管理するカスタムクラスを作成しましょう。このクラスで必要なデータを集約し、ユーザーに効果的に情報を表示できるようにします。PrimarySalePage.cs デモでは、設定セクションからデータを取得しています。
5. Primary Sale の詳細情報を取得
次に、ERC1155Sale.cs
を参照して、コントラクトから販売情報や支払いトークンを取得します。この情報を使って、例えばユーザーが指定された支払いトークンの残高を十分に持っているかローカルで確認できます。
6. トークンメタデータを取得し、アイテムを表示
指定したトークンコントラクトアドレスのトークン供給情報を取得するため、Indexer API を利用します。必ず ERC1155 コントラクトのアドレスのみを使用してください。セールコントラクトのアドレスは使用しないでください。
例えば、上記のトークン供給情報から supply.tokenMetadata.image
変数を利用して、ユーザーにアイテムを表示できます。
リモートURLから画像をダウンロードするために、独自の AssetHandler
クラスを実装してください。
7. ストアからアイテムを購入
これにより、セールコントラクトの mint 関数が呼び出されます。ユーザーのウォレットアドレスを to
パラメータに指定することで、そのユーザーにアイテムがミントされます。ERC1155Sale.cs
クラスを使って CallContractFunction
を作成し、ユーザーのウォレットからセールコントラクトへトランザクションを送信できます。
ゲームUIでユーザーが購入ボタンをクリックすると、販売状態クラスの PurchaseAsync 関数を呼び出して結果を待ちます。購入が成功した場合は通知を表示し、UIを更新します。失敗した場合は、ユーザーがウォレットに資金を追加できるようQRコードを表示します。