准备工作
我们可以用Xcode创建个项目将一个.h,.m文件拷贝到Unity的指定路径
项目-->Assets-->Plugins-->iOS就ok了
1:oc代码向unity传值
首先在.h文件里声明一下方法,这里参数可以更改,但名字不要改(这里要在@end后写)
extern void UnitySendMessage(const char *,const char *,const char *);
然后就可以在.m文件里调用了
UnitySendMessage("A","B","C");
A:unity脚本挂载的gameobject(我们项目常有一个MainCamera,因此我用的都是用这一个,防止以后交互多了混乱)
B:方法名(这里我的理解是在A物体上挂的脚本里面写方法)
C:这个就是我们的参数了(因为之前定义的是const char *,所以参数形式为“1”这样的,不要@“1”这样写),因为传到Uunity里会因为类型的问题出错
到这里等程序调用到方法的时候就发到unity里了,那在unity里面怎么接受呢
相当简单,就是写个B方法就ok了,当然当unity脚本中的方法为静态方法时,这个方法无效,所以只能调用非静态的方法
2:unity想ios发消息
首先还是需要在oc代码里写好方法
首先.h(这里要在@end后写)
extern "C"
{
void GetProDuctId(const char * ProductId);
void GetURL(const char * Url,const char * PlayerId);
}
其次.m文件
方法的位置和我们平常写的不太一样(要在#import之后,@interface之前)(这个我也没弄清楚。。。我自己试着是可以的)
那么在unity脚本里怎么发消息呢
首先导入头文件
usingSystem.Runtime.InteropServices;
然后有一个固定写法,这里我贴一下代码 这里就相当于声明(个人理解)
public class BanShopMoneyGUI:BaseUI
{
#ifUNITY_IPHONE
[DllImport("__Internal")]
private static extern void GetProDuctId(stringID);
[DllImport("__Internal")]
private static extern void GetURL(stringURL,stringID);
#endif
}
然后再代码里调用
#ifUNITY_EDITOR
#elifUNITY_IPHONE
GetProDuctId (“A”);
GetURL(“B”,C);
#endif
到这里就ok了