【问题标题】:Passing IOS native objects back to unity3d将 IOS 原生对象传回 unity3d
【发布时间】:2013-04-05 11:19:44
【问题描述】:

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

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

F.e 原生 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);

【问题讨论】:

    标签: iphone ios plugins unity3d


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,这很有帮助。我还有一个关于 IOS 代表的问题。如果发生某些事情,我如何将通知传递给统一:f.e unitySendMessage(someClass, someNotification) 我可以在那里调用统一回调或类似:onSuccessSomthing() 或 onErrorSometing()
    猜你喜欢
    • 1970-01-01
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多