4

我目前正在使用纯 C 作为统一和目标 c 代码之间的 API,在 Objective-C 中为 Unity 编写应用内购买插件。

我面临的问题简介

基本功能已经可以使用。也就是说,我的插件中已经有一个非常基本的函数调用来启动对 Apple App Store 的产品请求,该请求可以从 Unity 调用。在统一脚本中,您只需像这样调用此方法:

[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];
}

现在我省略了 C 函数的一部分,该部分采用 productIdentifiers 数组并将其转换为 NSArray 只是为了保持简单并解释我要解决的问题。

现在 InAppPurchaseManager 类是一个单例类。RequestProductData 方法向应用商店发起产品请求。

问题

当 StoreKit 给我所有产品的回复时,这对我来说开始变得棘手。我想将检索到的每个产品的所有相关数据传递回统一 C# 脚本,以便您可以在游戏中处理数据。这意味着存储:

- 每个产品的名称

- 每个产品的描述

- 每种产品的价格

一个明显的解决方案是创建一个包含此信息的结构或类,然后为每个产品创建一个实例并将它们全部放入一个数组中。

问题

现在的问题是,我将如何将这组复杂的数据结构发送回 Unity 脚本?Unity的官方文档提到你可以使用这个方法调用将消息发送回Unity: UnitySendMessage("GameObjectName1", "MethodName1", "Message to send");

我接到了工作的电话,但明显的问题是它只允许您发送字符串。

所以:

我将如何将复杂数据结构的数组发送回 Unity 脚本?这甚至可能吗?

4

1 回答 1

1

跟进我的评论和您的评论:如果您想要一个强大的解决方案,我建议您查看此答案。如果这对性能至关重要,那么您将不得不通过序列化获得更多“手动”。那么,这种数据传输对性能有多重要?

于 2012-08-31T19:23:10.883 回答