我使用几个简单的方法实现了 IOS 插件,以将我的统一应用程序与 native 静态库交互。
我遇到的问题是将原生 UI 元素(对象)传回 unity。
F.e 原生 SDK 有创建角标(Badge)的方法(UIView),另一方面我有统一的按钮(它可以是 GUI 元素或一些 3d 对象,无论如何)
我通过我的插件从 unity 访问这个方法,像这样:
[DllImport("__Internal")]
private static extern void XcodePlugin_GetBadgeView();
及后续:
void XcodePlugin_GetBadgeView()
{
// Generate native UIView
UIView *badge = [Badge badge];
???? Return UIView badge instance to unity (hm)?!
}
所以我需要这样的东西:
[someViewOrObject addSubView:badge];
但内部统一。
我知道可以将消息发送回 unity:
UnitySendMessage( "UnityCSharpClassName" , "UnityMethod", "WhateverValueToSendToUnity");
但是 WhateverValueToSendToUnity 应该是 UTF8 字符串。
总结:
只有一个想法,我必须将坐标从 unity 传递到 native 插件,然后将角标(Badge)添加到这些坐标(不确定这是最佳解决方案):
[DllImport("__Internal")]
private static extern void XcodePlugin_AddBadgeViewToCoordinates(x,y);
最佳答案
如果只是为了角标(Badge)坐标,你的想法似乎没问题。
如果您想从 iOS 获得其他东西到 Unity,我认为没有很多其他选择。我能想到的唯一其他方法是将数据保存在文件中(例如,在 NSTemporaryDirectory 中),然后使用 UnitySendMessage 将文件名作为 UTF8String 传回。我以前使用过这种技术(将图像和 JSON 文件传递给 Unity)。 iOS 会自动清理该目录中的文件。
关于iphone - 将 IOS native 对象传回 unity3d,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15832580/