原地址:http://www.aichengxu.com/article/%CF%B5%CD%B3%D3%C5%BB%AF/28797_12.html
Unity3D与iOS的交互设计<ViewController 的跳转>,有需要的朋友可以参考下。
这也是第一次做这样的需求,也是公司的需要呀。做出这个真是一言难尽呀。。。
小弟主要不是搞iOS开发的,一直以来都是开发Android开发,只是昨天被老大叫过去做一下iOS的二维码扫描。有点iOS基础的我,只好到处搜索了。然后,二维码扫描做好了,遇到了一个难题,就是将做好的二维码扫描放到Unity3D上去。这个好难呀。。。
刚开始吧,一直找不打rootController,尝试了多次后,只好放弃了。最后自己继承了一个View,仿制AlertDialog填充全屏,这样算是草草了事。
具体操作如下:
1.这是Unity3D提供的一个按钮点击方法 <这个方法是根据Unity3D工程师大哥提供的,自己在 UnityAPPController类中手动添加的,至于为什么是这个,我也不是很清楚,反正这个方法,Unity3D类中会调用,并执行下去>
extern "C" void setupCamera(){
//这是创建的一个视图控制器对象,当然,是为了调用它里面的stepC方法
UnityAppController *uni=[[UnityAppController alloc]init];
//这是需要调用的方法 [uni stepC]; }
2.在UnityAppController中实现stepC方法
- (void)stepC{ //创建需要弹出的视图 self.alert = [[MLCarAlert alloc]init]; // 自定义高度 self.alert.height = [UIScreen mainScreen].bounds.size.height; [self initNav]; // 显示Alert [self.alert show];
}
这样的话,就实现了视图的跳转,当然,有一个问题就是,自定义的dialog没有获取到焦点,这让我很头痛。还好按钮只有一个,所以,在创建dialog的时候,我再定义了一个导航栏,通过导航栏添加按钮,使用这个按钮就解决了。<当然,如果布局控件是在UnityAppController中添加的,就不会造成失去焦点这个问题,这个问题后来我也没有解决,因为事情太多了。忙不过来。>
今天的时候,老大又让我做一个界面,这个界面控件就很多了。所以,上面那种方法就不行了。最后怎么办呢?
还好,找到了这样的一个方法。
不停的查找,不停的研究,不停的搜索,后面终于在 iPhone_View.mm 中找到了我需要的rootViewController,如下:
UIViewController *UnityGetGLViewController()<span style="font-family: Arial, Helvetica, sans-serif;">{</span>
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="white-space:pre"> </span> return GetAppController().rootViewController;</span>
<span style="font-family: Arial, Helvetica, sans-serif;"> }</span>
<span style="font-family:Arial, Helvetica, sans-serif;">这样,就得到了Unity3D的rootViewController</span>
<span style="font-family:Arial, Helvetica, sans-serif;"> </span>
<span style="font-family:Arial, Helvetica, sans-serif;">然后就好办啦,将自己的ViewController copy 到工程中,</span>
<span style="font-family:Arial, Helvetica, sans-serif;">创建:TableFormViewController *table=[[TableFormViewController alloc]init]; </span>
<span style="font-family:Arial, Helvetica, sans-serif;">跳转:[UnityGetGLViewController() presentViewController:table animated:YES completion:nil];</span>
这样的话,就可以进自己的ViewController中操作啦。。
如果,有高手路过,还请指点指点呀。