只将unity的UI控件添加到iOS视图层上,不显示unity原生的背景(一)

最近需要做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怎么实现相关的方法的。


这个界面就是效果图,高德地图是iOS原生显示的,剩下的“开启地图”,“定位”,“开始扫描”,“云彩”,“cube模型”都是unity的UI

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值