将IOS本机对象传递回unity3d

时间:2013-04-05 11:19:44

标签: iphone ios plugins unity3d

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

我遇到的问题是将原生UI元素(对象)传递给统一。

F.e native 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");

但是WhateverValueToSendToUnity应该是UTF8字符串。

总结:

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

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

1 个答案:

答案 0 :(得分:1)

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

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