4

私は現在、UnityとObjective-Cコードの間のAPIとして純粋なCを使用して、Objective-CでUnity用のアプリ内購入プラグインを作成しています。

私が直面している問題の紹介

基本的な機能はすでに機能しています。つまり、Unityから呼び出すことができるAppleAppStoreへの製品リクエストを開始するための非常に基本的な関数呼び出しがプラグインにすでにあります。ユニティスクリプトでは、次のようにこのメソッドを呼び出すだけです。

[DllImport ("__Internal")]
private static extern void RequestProducts(string[] productIdentifiers, int arrayCount);                          

public static void RequestProductData( string[] productIdentifiers )
{
    RequestProducts(productIdentifiers, productIdentifiers.Length);
}

これにより、次のようなC関数が呼び出されます。

void RequestProducts(char* productIdentifiers[], int arrayCount)
{
    // Call the In-App purchase manager to initialize the product request
    [[InAppPurchaseManager sharedInAppPurchaseManager] RequestProductData:productIdentifierCollection];
}

ここで、productIdentifiers配列を取得してNSArrayに変換するC関数の部分を省略しました。これは、単純にして、解決しようとしている問題を説明するためです。

これで、InAppPurchaseManagerクラスはシングルトンクラスになります。RequestProductDataメソッドは、アプリストアへの商品リクエストを開始します。

問題

StoreKitがすべての製品について私に返答を返すとき、これは私にとってトリッキーになり始めるところです。ゲームでデータを処理できるように、取得した各製品に関連するすべてのデータをユニティC#スクリプトに戻したいと思います。これは、以下を保存することを意味します。

-各製品の名前

-各製品の説明

-各製品の価格

明らかな解決策は、この情報を含む構造体またはクラスを作成してから、各製品のインスタンスを作成し、それらすべてを配列に配置することです。

質問

ここで問題となるのは、この複雑なデータ構造の配列をUnityスクリプトに送り返すにはどうすればよいでしょうか。Unityの公式ドキュメントには、次のメソッド呼び出しを使用してUnityにメッセージを送り返すことができると記載されています 。UnitySendMessage( "GameObjectName1"、 "MethodName1"、 "Message to send");

動作するように呼び出しましたが、明らかな問題は、文字列を送信することしかできないことです。

それで:

複雑なデータ構造の配列をUnityスクリプトに送り返すにはどうすればよいですか?これも可能ですか?

4

1 に答える 1

1

私のコメントとあなたのコメントをフォローアップしてください。堅牢なソリューションが必要な場合は、この回答を確認することをお勧めします。これがパフォーマンスにとって重要なものである場合は、シリアル化でより多くの「手動」を取得する必要があります。では、このデータ転送はパフォーマンスにとってどれほど重要なのでしょうか。

于 2012-08-31T19:23:10.883 に答える