只将unity的UI控件添加到iOS视图层上,不显示unity原生的背景(一)
2017-04-07 09:59
1216 查看
最近需要做LBS类的游戏,需要结合高德地图,但是高德地图没有unity的相关库,所以有个思路就是将unity视图背景变成透明的,然后添加到iOS视图层的上面,这样既能显示iOS视图,又能显示unity视图上的UI控件。
找了unity论坛里面的方法,发现可行,运行的还可以,unity和iOS上的控件都可以选中。
废话不多说,说一下具体方法。
首先打开unity一个项目,将摄像机改成DepthOnly模式,
然后添加自己想要的UI控件及页面逻辑,
这里添加一个与iOS交互的方法,当点击的时候调用iOS中的一个方法,能够将unityWindow设置为iOS原生的window,这样是为了将unity层级显示在iOS上面。
(关于unity调用iOS方法的具体代码,参考另一篇文章)
导出成xcode项目。
修改一句代码,这句代码的作用就是将unity背景层透明的方法。
在metalHelp.mm文件中设置,
surface->layer.opaque = NO;
CGFloat backgroundColorValues[] = {0,0,0,0};
然后自己创建一个BaseViewController,
然后更改视图
- (void)creatUI{
UIWindow * window = [UIApplication sharedApplication].keyWindow;
_mapView = [[MAMapView alloc] initWithFrame:window.bounds];
[_mapView setDelegate:self];
[window addSubview:_mapView];
BaseViewController * vc = [[BaseViewController alloc]init];
window.rootViewController = vc;
[vc.view addSubview:UnityGetGLView()];
UnitySendMessage([@"Canvas" UTF8String], [@"initBtn" UTF8String], [@"yes" UTF8String]);
}
这样就能做到即显示iOS界面,又显示unity控件了,而且添加模型后,也并没有渲染卡顿。
当然如果要点击响应unity控件,还需要添加修改一些代码,这个在下一篇文章说。
当然,以后还会说一下Android怎么实现相关的方法的。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/06/81f65f866ed4917112778108223a4079)
这个界面就是效果图,高德地图是iOS原生显示的,剩下的“开启地图”,“定位”,“开始扫描”,“云彩”,“cube模型”都是unity的UI
找了unity论坛里面的方法,发现可行,运行的还可以,unity和iOS上的控件都可以选中。
废话不多说,说一下具体方法。
首先打开unity一个项目,将摄像机改成DepthOnly模式,
然后添加自己想要的UI控件及页面逻辑,
这里添加一个与iOS交互的方法,当点击的时候调用iOS中的一个方法,能够将unityWindow设置为iOS原生的window,这样是为了将unity层级显示在iOS上面。
(关于unity调用iOS方法的具体代码,参考另一篇文章)
导出成xcode项目。
修改一句代码,这句代码的作用就是将unity背景层透明的方法。
在metalHelp.mm文件中设置,
surface->layer.opaque = NO;
CGFloat backgroundColorValues[] = {0,0,0,0};
然后自己创建一个BaseViewController,
然后更改视图
- (void)creatUI{
UIWindow * window = [UIApplication sharedApplication].keyWindow;
_mapView = [[MAMapView alloc] initWithFrame:window.bounds];
[_mapView setDelegate:self];
[window addSubview:_mapView];
BaseViewController * vc = [[BaseViewController alloc]init];
window.rootViewController = vc;
[vc.view addSubview:UnityGetGLView()];
UnitySendMessage([@"Canvas" UTF8String], [@"initBtn" UTF8String], [@"yes" UTF8String]);
}
这样就能做到即显示iOS界面,又显示unity控件了,而且添加模型后,也并没有渲染卡顿。
当然如果要点击响应unity控件,还需要添加修改一些代码,这个在下一篇文章说。
当然,以后还会说一下Android怎么实现相关的方法的。
这个界面就是效果图,高德地图是iOS原生显示的,剩下的“开启地图”,“定位”,“开始扫描”,“云彩”,“cube模型”都是unity的UI
相关文章推荐
- 只将unity的UI控件添加到iOS视图层,不显示unity的原生背景(二)
- No.1 iOS---UI学习第一天(笔记)(以及为什么模拟器上不显示我们添加的控件的解决办法)
- IOS-6-UI知识总结-1(代码添加控件、视图切换、多种传值方式)
- iOS UIWindow最上层添加视图或者其他控件
- swift中UI适配,即视图控件在导航栏下面开始显示
- swift中UI适配,即视图控件在导航栏下面开始显示
- IOS UISplitViewController之 解决 密码框添加之后 调用子视图的转向方法之时 对象为空
- IOS-UI-视图控件UIview
- iOS 6编程-UIScrollView滚动视图和UIPageControl分页控件实现图像分页显示
- iOS开发如何在一个透明视图上添加不透明的子控件
- ios:用代码向视图中添加各种控件
- iOS--错误集锦--UI控件不显示原因之一
- 给iOS SDK中的表格控件(UITableView)添加背景图
- iOS 6编程-UIScrollView滚动视图和UIPageControl分页控件实现图像分页显示(2)
- Emgu CV添加UI控件不显示
- iOS----如何添加背景图片 并使图片可以一直在背景中显示
- 【Unity&NGUI】为什么把NGUI的UI制作为预制体,再生成到新场景,UI无法正常在Game视图显示
- 在iOS视图控制中显示背景图
- iOS开发-UI控件:添加分段控件SegmentControl
- iOS_使用UIBezierPath对象实现视图控件的立体阴影效果和半透明背景效果