您的位置:首页 > 移动开发 > Unity3D

Unity调用WebService的方法,支持IL2CPP

2016-12-27 14:39 399 查看
关于这个话题,网上也是有不少了,不过只从iOS需要IL2CPP后,那些方法基本上都没用了,因为C#原本的办法是通过生成代理类来进行访问,那个代理类都是使用C#反射,自然没法用,如果知道原理的话其实都很容易自己去实现,不过哪有那么多时间去学习那个玩意的原理,省下来的时间购泡几个妹纸了

正题开始

使用 http://easywsdl.com/WsdlGenerator 这个玩意就可以很容易生成各个客户端需要的代码,目前来说我们只需要安卓和iOS就够了。需要 翻-墙 才能进去,我是用的Goggle账号登录的,总之我生成的是iOS的,生成的是OC语言,其实OC很容易和Unity交互

static char resultStr[1024];

extern "C" {
    const
char* LoginWeb(const
char* s_user,
                         const
char* s_pw);
}

const char* LoginWeb(const
char* s_user,
              const
char* s_pw){

    memset(resultStr,
0, sizeof(resultStr));
    NSString* user=[NSString
stringWithUTF8String:s_user];
    NSString* pw=[NSString
stringWithUTF8String:s_pw];

    NSString* url=@"http://你的地址WS/WSAccount.asmx";

    
    NSError* error=nil;
    MHKWSAccountSoap12* service = [[MHKWSAccountSoap12
alloc] initWithUrl: url ];
    NSString* res = [service
Login:user userPass:pw 
__error: &error];
    NSLog(@"LoginWeb user:%@", user);
    if(error!=nil)
    {
        //error occured
        NSLog(@"LoginWeb error:%@",error);
    }else{
        if(res!=nil){
            const
char* s = [res UTF8String];
            strcpy(resultStr, s);
        }
    }
    return
resultStr;
}

Unity里使用
        [DllImport(“__Internal”, CharSet = CharSet.Auto)]
        public static extern IntPtr LoginWeb(string s_user, string s_pw);
具体的函数是根据你的服务来生成,生成的包里面也有文档,很方便,安卓也是同理,而且生成的包里就有jar包,可以直接使用

以上代码可能会有内存泄漏,因为我不是很懂OC代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: