如何将unity ios项目集成到本机ios swift项目中?

时间:2018-08-10 02:54:21

标签: c# ios unity3d swift4

我也尝试了包括link在内的大多数在线资源,以将我的统一项目集成到 swift 4 本机项目中,但不幸的是直到现在为止都没有帮助。当我进行Linked修复时,出现以下 c ++ 文件错误:

No member named 'GetHostByAddr40' in 'il2cpp::icalls::System::System::Net::Dns'; did you mean 'GetHostByAddr'?

顺便说一句,我实际上是在做一个增强现实项目,该项目也具有一些本机iOS设计。从那以后,我使用 swift 4 Xcode 9.2 完成了这些部分。本机部分包含项目的开始和结束部分。在这两者之间,有一个增强现实部分,是通过使用 unity 2018.2.0f2 personal vofuria 7.2.23 完成的。

最后,我现在有一个iOS本机项目和unity项目。我想将unity部分集成到iOS本机中!

1 个答案:

答案 0 :(得分:1)

经过长时间的搜索,我发现了错误。 使用this描述的解决方案修复后,我最终找不到Bulk_Mono.Security_1.cpp文件。所以我开始搜索它。然后我确定了问题所在。问题与.Net的 4.0脚本运行时版本有关。由于使用 LitJson 要求的最低版本为4.0,因此我使用4.0创建了该项目。 4.0无法为iOS生成Bulk_Mono.Security_1.cpp文件。然后,我从项目中删除了 LitJson ,并将项目运行时版本降级为3.x等效版本,并且随着以下2个文件的更改,它开始可以正常工作。

请注意,通常像框架一样集成生成的objective-c项目,然后进行以下更改并运行。

  1. DisplayManager.mmclasses/unity生成的文件进行了更改。自动生成的不包含return deviceUnknown;的最后一行。所以我们必须手动编写。

    elif PLATFORM_TVOS
         if (!strncmp(model, "AppleTV5,", 9))
       return deviceAppleTV1Gen;
     else if (!strncmp(model, "AppleTV6,", 9))
       return deviceAppleTV2Gen;
     else
        return deviceUnknown;
    endif
      return deviceUnknown
    
  2. 对位于生成的项目SplashScreen.mm中的classes/ui进行以下更改。将bool hasStoryboard = [[NSBundle mainBundle] pathForResource: @"LaunchScreen" ofType: @"storyboardc"] != nullptr;更改为bool hasStoryboard = [[NSBundle mainBundle] pathForResource: @"LaunchScreen_1" ofType: @"storyboardc"] != nullptr;。完整的方法如下。

        void ShowSplashScreen(UIWindow* window)
        {
           bool hasStoryboard = [[NSBundle mainBundle] pathForResource: @"LaunchScreen_1" ofType: @"storyboardc"] != nullptr;
    
           if (hasStoryboard)
           {
              UIStoryboard *storyboard = [UIStoryboard storyboardWithName: 
              @"LaunchScreen" bundle: [NSBundle mainBundle]];
              _controller = [storyboard 
              instantiateViewControllerWithIdentifier: @"unitySplashStoryboard"];
            }
            else
               _controller = [[SplashScreenController alloc] init];
    
            [_controller create: window];
            [window makeKeyAndVisible];
        }
    

这就是我整合的方式。