unitty导出工程嵌入iOS原生工程中出现黑屏,但是模型还是可以扫。

发布时间:2017-1-18 1:14:36 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"unitty导出工程嵌入iOS原生工程中出现黑屏,但是模型还是可以扫。 ",主要涉及到unitty导出工程嵌入iOS原生工程中出现黑屏,但是模型还是可以扫。 方面的内容,对于unitty导出工程嵌入iOS原生工程中出现黑屏,但是模型还是可以扫。 感兴趣的同学可以参考一下。

unitty导出工程嵌入iOS原生工程中出现黑屏,但是模型还是可以扫。

一般上出现这个问题,其实就是因为两个注意点没有搞清楚。我们分析一下,如果我们的模型或者视屏能够出来但是屏幕还是黑屏的。说明我们的unity的组件其实已经加载出来了。但是供我们交互的那个Layer类并没有按照我们预想的样子工作。断点查看发现是一个空指针0x0。初步怀疑是VuforiaNativeRendererController这个方法异常工作造成的,所以有了以下的解决过程。

一、如果我们这么写

const char* AppControllerClassName = "AppDelegate";int main(int argc, char* argv[]){    @autoreleasepool    {        UnityInitTrampoline();        UnityParseCommandLine(argc, argv);                RegisterMonoModules();        NSLog(@"-> registered mono modules %p\n", &constsection);        RegisterFeatures();        std::signal(SIGPIPE, SIG_IGN);        UIApplicationMain(argc, argv, nil, [NSString stringWithUTF8String:AppControllerClassName]);    }    return 0;}

我们其实得到的入口代理[UIApplication sharedApplication].delegate所映射并不是我们预想的AppDelegate类名。而是unity那边给我们提供的专门为了与原生交互继承于UnityAppController类的一个子类名字叫VuforiaNativeRendererController的类。其中虽然有帮我们重写了shouldAttachRenderDelegate方法。但是并不能真正实现我们预想的交互效果。

二、我们换种写法的话,就完美绕过了VuforiaNativeRendererController这个类的干扰。现在画面应该已经出现了。详细请看我的上一篇博客http://www.cnblogs.com/fuunnyy/p/6227740.html。有详细的步骤。

const char* AppControllerClassName = "AppDelegate";int main(int argc, char* argv[]){    @autoreleasepool    {        UnityInitTrampoline();        UnityParseCommandLine(argc, argv);                RegisterMonoModules();        NSLog(@"-> registered mono modules %p\n", &constsection);        RegisterFeatures();        std::signal(SIGPIPE, SIG_IGN);        NSString *ss = NSStringFromClass([AppDelegate class]);        UIApplicationMain(argc, argv, nil,ss);    }

上一篇:mysql 数据类型拾遗
下一篇:原生js操作dom备忘

相关文章

相关评论