Unity与Ios的交互传值

作者: Serafina_f898 | 来源:发表于2017-05-10 14:28 被阅读0次

准备工作

我们可以用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了

相关文章

网友评论

    本文标题:Unity与Ios的交互传值

    本文链接:https://www.haomeiwen.com/subject/fvfgtxtx.html