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

如何从本机iOS应用程序控制嵌入式Unity应用程序,ios,unity3d,Ios,Unity3d,我想创建一个包含Unity3D元素的iOS应用程序。我还想控制这些元素,改变颜色并设置它们的特定属性 我想从UIKit元素进行控制,这样我就可以轻松地创建接口(使用本机元素,如UINavigationController) 有没有办法将Unity3D视图集成为本机(或Xamarin)应用程序中的子视图 我已经找到了一种方法,可以从Unity获取导出的构建代码,并将其放入另一个项目中,这样我就可以实例化UIWindow,并在需要时显示它,但我还没有找到一种方法与它交互或将其用作视图层次结构中的子视

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

我想从
UIKit
元素进行控制,这样我就可以轻松地创建接口(使用本机元素,如
UINavigationController

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

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

有人对此有经验吗?还是一种方法

编辑:我脑子里有一个结构:创建一个unity应用程序,获取主窗口(或者甚至是其中包含的视图,如果它不影响内容的话),然后在视图层次结构中使用我喜欢的视图。我想我可能可以使用本机插件接口与我的Unity视图对话


Edit2:我发现了一段视频,解释了我所想的整个过程:

这个交互需要为Unity编写iOS插件。有点难,但绝对有可能。 看看这里,你会回答你的问题

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

[DllImport ("__Internal")]
private static extern float FooPluginFunction();
将编辑器设置为iOS构建目标 将本机代码源文件添加到生成的Xcode项目的“Classes”文件夹中(更新项目时不会覆盖此文件夹,但不要忘记备份本机代码)。 如果你使用C++(.cp)或Objul-C++(.mm)来实现插件,你必须确保函数用C链接声明,以避免名称的篡改问题。
extern "C" {
  float FooPluginFunction();
}
从本机代码调用Unity

UnitySendMessage("GameObjectName1", "MethodName1", "Message to send");
希望有帮助