我目前正在使用纯C作为Unity和Objective-C代码之间的API,为Objective-C中的Unity编写In-App购买插件。将复杂的数据类型从纯C插件传递到Unity C#脚本
介绍这个问题,我面对
的基本功能已经工作。也就是说,我的插件中已经有一个非常基本的函数调用,可以向可从Unity调用的Apple App Store发起产品请求。在统一的脚本,你只需调用这个方法是这样的:
[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给我回一个响应的所有产品,这就是它开始变得棘手我。我想将检索的每个产品的所有相关数据传回Unity C#脚本,以便您可以处理游戏中的数据。这意味着存储:
每个产品
每个产品
每个产品
的-The价格的-The描述的-The名字的一个明显的解决方案将是使结构或类,其包含这些信息,然后为每个产品创建一个实例并将它们全部放入数组中。
问题
现在的问题是,如何将我去送这个数组复杂的数据结构的回团结脚本? Unity的官方文档提到您可以使用此方法调用将消息发送回Unity: UnitySendMessage(“GameObjectName1”,“MethodName1”,“Message to send”);
我接到了电话,但显而易见的问题是,它只允许您发送字符串。
所以:
我将如何去发送复杂的数据结构的阵列回到统一的脚本?这甚至有可能吗?
您需要序列化对象并将它们传递给C#组件。没有“内置”的方式来传递复杂对象或对象集合。 – Kiril
啊哈我看到:)你能推荐任何文章/资源的序列化/编组的基础上,因为我从来没有真正与此工作过。任何类型的参考文献都会被评价。我会研究一下:) – CodingBeagle
@ user1163640:你是否设法使用协议缓冲区来交换unity和插件之间的数据? – Heisenbug