1

我用几个简单的方法实现了 IOS 插件,以使我的统一应用程序与本机静态库交互。

我面临的问题是将原生 UI 元素(对象)传递回统一。

Fe原生SDK有创建徽章(UIView)的方法,另一方面我有统一的按钮(它可以是GUI元素或一些3d对象,无论如何)

我通过我的插件从统一访问此方法,例如:

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

但内部统一。

我知道有能力将消息发送回统一:

UnitySendMessage( "UnityCSharpClassName" , "UnityMethod", "WhateverValueToSendToUnity");

但 WhatValueToSendToUnity 应该是 UTF8 字符串。

综上所述:

只有一个想法我必须将坐标从统一传递到本机插件,然后将徽章添加到这些坐标(不确定这是最好的解决方案):

[DllImport("__Internal")]    
private static extern void XcodePlugin_AddBadgeViewToCoordinates(x,y);
4

1 回答 1

1

如果只是为了徽章坐标,你的想法似乎很好。

如果您想从 iOS 中将其他内容导入 Unity,我认为没有其他选择。我能想到的唯一其他方法是将数据保存在文件中(例如,在 NSTemporaryDirectory 中),然后使用 UnitySendMessage 将文件名作为 UTF8String 传回。我之前使用过这种技术(将图像和 JSON 文件传递​​给 Unity)。iOS 会自动清理该目录中的文件。

于 2013-04-07T23:35:01.490 回答