【问题标题】:How to integrate the unity ios project into native ios swift project?unity ios 项目如何集成到原生 ios swift 项目中?
【发布时间】:2018-08-10 02:54:20
【问题描述】:

我也尝试了包括link 在内的大部分在线资源来将我的统一项目集成到 swift 4 原生项目中,但遗憾的是直到现在都没有帮助。当我做Linked 修复时,我进入了以下 c++ 文件错误:

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

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

最后,现在我有一个iOS原生项目和unity项目。我想把 unity 部分集成到 iOS 原生中!

【问题讨论】:

标签: c# ios unity3d swift4


【解决方案1】:

经过长时间的搜索,我得到了错误。 在使用this 描述的解决方案进行修复后,我发现Bulk_Mono.Security_1.cpp 找不到文件。所以我开始寻找它。然后我发现了问题。问题在于 .Net 的 4.0 脚本运行时版本。我用 4.0 制作了这个项目,因为使用 LitJson 需要最低 4.0。 4.0 不会为 iOS 生成 Bulk_Mono.Security_1.cpp 文件。然后我从项目中删除了 LitJson 并将项目运行时版本降级为 3.x 等效版本,并且它开始与以下 2 个文件的更改一起正常工作。

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

  1. 对位于classes/unityDisplayManager.mm 生成的文件进行了更改。自动生成的不包含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. 对位于生成项目的classes/ui 中的SplashScreen.mm 进行以下更改。将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];
        }
    

这就是我如何集成的全部内容。

【讨论】:

    猜你喜欢
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多