iOS和unity的交互问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS和unity的交互问题相关的知识,希望对你有一定的参考价值。

之前完全没接触过unity,因为现在公司需要在unity的代码上做二次开发,所以我要能够随意调用unity的方法,在网上搜了很多种方法都没什么用,全是几年前的版本,我只是在别人原来的方法上更新下,写一个最新版本的交互例子。   我用的是unity5.3和Xcode7.3

 创建一个按钮直接跳转到unity项目的方法网上可以搜到,我就不做描述了

这里只说怎样随意调用unity里单个的方法

创建unity场景这个可以通过

雨松momo大神的方法来弄 http://www.xuanyusong.com/archives/517

 

技术分享

 

技术分享

我的方法就是在他的基础上更新了一下,主要是他那个版本是很老的,不适用现在的版本

导出成ios后我创建了一个类叫MyView  技术分享

 MyView.h文件

#import <UIKit/UIKit.h>

@interface MyView : NSObject
+(void)CreateButton:title rect:(CGRect)rect action:(SEL)action controller:(UIViewController *)controller;
+(void)CreateTitle:(UIViewController *)controller;
+(void)LeftButtonPressed;
+(void)RightButtonPressed;
+(void)UpButtonPressed;
+(void)DownButtonPressed;
+(void)Init:(UIViewController *)controller;
@end

MyView.mm文件

#import "MyView.h"

@interface MyView ()

@end

@implementation MyView


//创建按钮
+(void)CreateButton:title rect:(CGRect)rect action:(SEL)action controller:(UIViewController *)controller
{
    UIButton * btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    
    //设置按钮范围
    btn.frame = rect;
    
    //设置按钮显示内容
    [btn setTitle:title forState:UIControlStateNormal];
    
    //设置按钮改变后绑定的响应方法
    [btn addTarget:self action:action forControlEvents:UIControlEventTouchUpInside];
    
    //加入View中
    [controller.view addSubview:btn];
}


//创建标签
+(void)CreateTitle:(UIViewController *)controller
{
    //创建label视图
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 40)];
    //设置显示内容
    label.text = @"旋转控制";
    //设置背景颜色
    label.backgroundColor = [UIColor blueColor];
    //设置文字颜色
    label.textColor = [UIColor whiteColor];
    //设置显示位置居中
    label.textAlignment = NSTextAlignmentCenter;
    //设置字体大小
    label.font = [UIFont fontWithName:[[UIFont familyNames] objectAtIndex:10] size:20];
    
    [controller.view addSubview:label];
}


//向左按钮
+(void)LeftButtonPressed
{
    UnitySendMessage("Cube", "MoveLeft","");
}

//向右按钮
+(void)RightButtonPressed
{
    UnitySendMessage("Cube", "MoveRight","");
}
//向上按钮
+(void)UpButtonPressed
{
    UnitySendMessage("Cube", "MoveUp","");
}

//向下按钮
+(void)DownButtonPressed
{
    UnitySendMessage("Cube", "MoveDown","");
}


+(void)Init:(UIViewController *)controller
{
    [self CreateTitle:controller];
    
    [self CreateButton:@"左旋转" rect:CGRectMake(0,  50, 100, 40) action:@selector(LeftButtonPressed) controller:controller];
    [self CreateButton:@"右旋转" rect:CGRectMake(0, 100, 100, 40) action:@selector(RightButtonPressed) controller:controller];
    [self CreateButton:@"上旋转" rect:CGRectMake(0, 150, 100, 40) action:@selector(UpButtonPressed) controller:controller];
    [self CreateButton:@"下旋转" rect:CGRectMake(0, 200, 100, 40) action:@selector(DownButtonPressed) controller:controller];
}



@end

 

然后进入UnityAppController.mm里

技术分享

 

在UnityAppController.mm里面导入头文件

技术分享

 

 

找到这一行

技术分享

 

 

在这个方法里的return YES 之前加上这段代码

 

技术分享

 

然后运行就出现了这个界面

 

技术分享 

 

点击按钮后这个模型会旋转

技术分享

 

好了,就是这些

以上是关于iOS和unity的交互问题的主要内容,如果未能解决你的问题,请参考以下文章

Unity-IOS交互整理

unity 与oc交互

Unity与IOS交互

Unity3D 与 objective-c 之间数据交互。iOS SDK接口封装Unity3D接口 .-- 转载

Unity3d与iOS交互开发

[脚本] iOS 与unity交互 ,陀螺仪