当我们在整合项目的时候,可能需要的Unity与Xcode之间的互相调用,比如保存图片到IOS相册,Unity是无法直接存储图片到IOS相册,只能调用Xcode的方法才可以。下面简单得讲述一下他们之间是如何实现交互的。
想在Unity中调用Xcode里面的方法,首先需要一个连接两者之间的“接口”,其实就是预定义的一个方法,实现方法如下:
public class CallOS : MonoBehaviour {
[DllImport("__Internal")]
private static extern void _CallIOS();
void OnClick()
{
print("dian ji an niu !!!!!");
_CallIOS();
//Application.LoadLevel("1");
}
}
接口就是上面所说的CallOS方法,在点击Unity中的按钮之后,执行这个方法。下面看看Xcode里面是怎么处理的。
在执行文件中(.m)
+(MyView *)shareInstance
{
if(!instance)
{
instance = [[MyView alloc] init];
}
return instance;
}
void _CallIOS()
{
// do something here ,show your ios ui....
[[MyView shareInstance] showIOSView];
printf("UI显现!!!!!!\n");
}
-(void)showIOSView
{
self.view.userInteractionEnabled=YES;
// self.tabBarController.tabBar.userInteractionEnabled=YES;
// self.navigationController.navigationBar.userInteractionEnabled=YES;
for (UIView *view in self.view.subviews) {
[view setHidden:NO];
printf("xian shi \n ");
}
//self.view.userInteractionEnabled=NO;
printf("显示按钮!!!!!\n");
}
如上所示,执行CallOS方法,让实现写好的界面显现。这样就实现了在Unity中控制了Xcode界面的显示。
在Xcode中如果想控制Unity中的某些方法或者物体时,在执行文件中我们有这样的一个方法UnitySendMessage
在Xcode中界面UI相应事件中这样写道:
UnitySendMessage("FirstCamera","LoadScene","");
向Unity中的FirstCamera发送消息,让他执行挂载在他上面的LoadScene方法。这样就实现了在Xcode中控制Unity中方法的执行。
原文及下载地址:
链接:http://pan.baidu.com/s/1jG3kzJ4 密码:x5sw
大体执行流程就是这样的,有什么错误或者建议的地方,欢迎大家指正,谢谢!!!