unity3d嵌入到iOS工程(3d物体和iOS控件显示在同一个view上)

0 篇文章 0 订阅

最近公司要开发一款用于3d展示的应用,通过在网上拜读各大神的帖子,终于完美解决此类问题。(unity3d版本2017.3,xcode9.2)

前边unity3d打包iOS工程的方法在此就不做赘述,其他帖子基本可以解决,本帖直接上干货。

1、在打包好的iOS工程中,找到UnityAppController.m文件(在classes文件夹下),因为我们需要3d物体和控件同屏,所以要首先改造- (void)applicationDidBecomeActive:(UIApplication*)application;这个方法。具体代码如下:

- (void)applicationDidBecomeActive:(UIApplication*)application
{
    ::printf("-> applicationDidBecomeActive()\n");
        
    if(_unityAppReady)
    {
        if(UnityIsPaused())
        {
            UnityPause(0);
            UnityWillResume();
        }
        UnitySetPlayerFocus(1);
    }
    else if(!_startUnityScheduled)
    {
        _startUnityScheduled = true;
        [self performSelector:@selector(startUnity:) withObject:application afterDelay:0];
    }
    _didResignActive = false;
    
    static dispatch_once_t disOnce;
    dispatch_once(&disOnce,  ^ {
        [self performSelector:@selector(startViewC:) withObject:application afterDelay:0];
    });
    
    NSLog(@"_window22222222%@",_window.rootViewController);
}
-(void)startViewC:(UIApplication *)application{
    //自己的需要进入的视图
    MyViewController *root = [[MyViewController alloc] init];
    _window.rootViewController = root;
    
    GetAppController().unityView.frame = CGRectMake(0, 0, 512, 768);//我这里只对ipad进行了适配
    root.controller  = GetAppController();//controller是一个UnityAppController类型
  
}

2、在我们自己的controller中进行iOS代码处理,MyViewcontroller.h

#import <UIKit/UIKit.h>
#import "UnityAppController.h"
@interface MyViewController : UIViewController
@property(nonatomic, strong) UIView *vw;
@property(nonatomic)UnityAppController *controller;

@end

MyViewcontroller.m

#import "MyViewController.h"

@interface MyViewController ()

@end

@implementation MyViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.


    UIView *uview = [[UIView alloc] initWithFrame:CGRectMake(512, 0, 512, 768)];
    [self.view addSubview:uview];
    [uview addSubview:self.controller.unityView];

   //除了uview之外的区域,iOS的控件就可以按自己的项目需求处理了。

}

@end

通过上边的操作基本上已经解决了iOS和unity同窗的问题,如还有疑问或者觉得写的有错误的地方可以留言。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值