开发手机应用的时候开发环境都有使用WebService的接口。可以像使用函数一样调用web服务,unity3d如何调用web服务呢?我找了好久,资料很少,难道都直接用socket通讯来做了?
反复查看webservice接口的时候,我突然开窍了,很多时候unity根本没有必要做接口,直接读取webservice网址返回的结果读取文本就可以了!比如我网站的这个webservice服务http://songshizhao.com/apps/rockhero.asmx/AllMusicInfo
直接返回的就是一个文本。用unity的www类来读取返回的文本就可以了!当然也是需要一点点技巧的,因为返回的文本是xml文件,需要用XmlDocument类处理一下。加载也需要异步加载为好,因为万一网络延迟加载时界面可能会卡死。
对于有参数的webservice方法,使用网址传递参数值,如SelectMN(m,n)方法,unity直接访问网址时传递对应的参数即可。比如http://songshizhao.com/apps/rockhero.asmx/SelectMN?m=1&n=9。
IEnumerator GetMusicInfo() { WWW www = new WWW(url); //这部分看www的API,你懂的 yield return www; XmlDocument xml = new XmlDocument(); xml.LoadXml(www.text); XmlElement tables = xml.DocumentElement; int i = 0; foreach (XmlElement item in tables) { var str =item.InnerText.Split("," [0]); sceneLoad.BundleName[i]= str[1]; sceneLoad.AssetName[i] = str[2]; sceneLoad.BundleVarient[i] = str[3]; sceneLoad.singers[i] = "————" + str[4]; sceneLoad.songs[i] = str[5]; i += 1; } } }
unity这样使用web服务还是非常简单的!前提是你返回的web服务格式要有好一点,我最开始做的web服务喜欢直接返回DataSet,十分简单粗暴,但那个xml略复杂啊。如果你开发unity负责和web服务接口,千万要和做web服务的兄弟好好说说,返回数据稍微简化一下哈,不然处理xml还是挺费脑子的%>_<%。
我想unity大部分使用web服务的方法都是这样吧,因为如果去做接口,过程复杂不说还不一定实用可靠。