如何从本机iOS应用程序控制嵌入式Unity应用程序

时间:2017-01-04 08:09:13

标签: ios unity3d

我想创建一个包含Unity3D元素的iOS应用。我还想控制这些元素,改变颜色并设置它们的特定属性。

我想从UIKit元素进行控制,这样我就可以轻松创建界面(使用UINavigationController等原生元素。)

有没有办法将Unity3D视图作为子视图集成到本机(或Xamarin)应用程序中?

我找到了一种从Unity获取导出的构建代码并将其放入另一个项目的方法,以便我可以实例化UIWindow并在需要时显示它,但我还没有找到一种交互方式使用它或在视图层次结构中将其用作子视图。

有没有人有这方面的经验?或者这样做的方法?

编辑:我脑子里有一个结构:创建一个统一的应用程序,取主窗口(甚至包含在其中的视图,如果这不会弄乱内容),然后根据需要使用视图层次结构中的视图。我想我可以使用Native Plugin Interface与Unity视图对话。

Edit2:我发现了一段视频,解释了我想到的整个过程:https://vimeo.com/145572230

1 个答案:

答案 0 :(得分:2)

此互动需要为Unity编写iOS插件。有点艰苦的工作,但绝对可能。 看看这里应该回答你的问题。

https://docs.unity3d.com/Manual/PluginsForIOS.html

在C#文件中定义您的extern方法,如下所示:

[DllImport ("__Internal")]
private static extern float FooPluginFunction();

将编辑器设置为iOS构建目标 将您的本机代码源文件添加到生成的Xcode项目的“Classes”文件夹中(更新项目时不会覆盖此文件夹,但不要忘记备份您的本机代码)。 如果您使用C ++(。cpp)或Objective-C ++(。mm)来实现插件,则必须确保使用C链接声明函数以避免名称错位问题。

extern "C" {
  float FooPluginFunction();
}

从本机代码调用Unity

UnitySendMessage("GameObjectName1", "MethodName1", "Message to send");

希望有所帮助