通过iOS原生对象回unity3d(Passing IOS native objects back

2019-10-17 23:35发布

我实现了IOS插件有几个简单的方法来interract我的原生静态库的统一应用。

的问题,我面对,则传回本地UI元素(对象)为一。

铁原生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字符串。

结论:

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

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

Answer 1:

如果它只是徽章坐标,你的想法似乎罚款。

如果你想从iOS系统进入团结其他的事情,我不认为还有许多其他的选择。 我能想到的唯一另一种方法是将数据保存在一个文件中 (例如,在NSTemporaryDirectory),然后通过文件名后面使用作为一个UnitySendMessage UTF8字符串。 我用这个技术之前(图像和JSON文件传递)来统一。 在该目录中的文件被由iOS的自动清理。



文章来源: Passing IOS native objects back to unity3d