我使用几个简单的方法实现了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);
答案 0 :(得分:1)
如果只是徽章坐标,你的想法似乎很好。
如果您还想从iOS进入Unity,我认为还有很多其他选择。我能想到的唯一另一种方法是将数据保存在文件中(例如,在NSTemporaryDirectory中),然后使用UnitySendMessage将文件名作为UTF8String传回。我之前使用过这种技术(将图像和JSON文件传递给Unity)。该目录中的文件将被iOS自动清理。