【发布时间】:2018-05-23 12:47:56
【问题描述】:
我正在制作一个 Unity 项目并尝试将在 iPhone 上的BLE (BlueTooth) 收到的float* array 发送到 Unity 项目的C# code。
那些从 C# 发起到 C++ 端以通过传递数组来接收数据的函数调用是很常见的。 但是在这里,当接收到数据时,这个数据传输是从 Objective 端到 C# 的。
我使用插件来连接 C#。
我的Objective C那边有
BLEObject.h, BLEObject.m, UnityBridge.h and UnityBridge.mm。
UnityBridge 是与 C# 接口的 C++ 代码。
UnityBridge.h 有
#ifdef __cplusplus
extern "C" {
#endif
void CallMethod(float* array);
#ifdef __cplusplus
}
#endif
UnityBridge.mm 有
#import "UnityBridge.h"
void CallMethod(float* objectName)
{
//some implementation here
}
BLEObject.h 有
+(void) sendMessage:(NSData*)floatArray;
BLEObject.m 有
+(void) sendMessage:(NSData*)floatArray
{
//I need to convert here NSData* to float array, how?
CallMethod(floatArray);
}
当我在 Objective C 端收到来自BLE, I call [BLEObject sendMessage:floatArray] 的数据时。
然后在C#端,
[DllImport ("__Internal")]
public static extern void CallMethod (float* array);
然后我将 CallMethod 实现为
public static void CallMethod (float* array){
//reading array here
}
其实这段代码是行不通的,但这是我喜欢实现的流程。 我该如何实现?
【问题讨论】:
-
我正在实现代码。完成后我可以详细讨论。请不要关闭那些试图关闭此帖子的人。
标签: c# objective-c unity3d interopservices