Unity 管理www类访问的写法
来源:互联网 发布:淘宝网京东商城电器 编辑:程序博客网 时间:2024/06/06 06:13
在Unity做项目中,避免不了与www类的交互,通常在一个很大的项目里,有很多方面会涉及到与网络的访问,但是用的比较多的时候,难免在管理上不会出现麻烦的事情,在这里提供一个简单的方法,个人观点还是方便使用的。
整体的思路是把所有的www访问都写在一个脚本里,所有涉及到的链接URL都写在一个统一的地方,在需要调用的时候或者需要调用的地方去访问脚本里特别的方法。
首先,新建一个类WWWConnect,并继承System.IDisposable接口,其实这个接口并没有实际的用处,只是在后面使用到这个类的时候(using),要求有这个接口的实现:(在这里是以post访问为例)
public class WWWConnect : System.IDisposable{ public string url = ""; public delegate string actiondel(string arg); public bool mDone; public WWWConnect(string urltemp) { url = urltemp; } public IEnumerator WWWPost(WWWForm form, actiondel action) { mDone = false; string urlString = url; using (WWW www = new WWW(urlString, form)) { while (!www.isDone) { yield return new WaitForSeconds(0.1f); } if (www.error == null) { action(www.text); } else { action("error"); } mDone = true; } } public void Dispose() { //throw new System.NotImplementedException(); }}
其次我们在新建一个脚本(UseWWW.cs),这个脚本我们最好设置成在Unity的任何场景中都可访问到,利用这个脚本我们写一个方法来调用我们上面写的这个类WWWConnect。
在这里我们先声明一个变量来存放我们要访问的URL
private string url = "****.****.****"; public IEnumerator Usewww(string arg01,string arg02,System.Action<string> action) { string data = ""; WWWConnect.actiondel GetWWW = x => data = x; using (WWWConnect wwwconnect = new WWWConnect(url)) { WWWForm form = new WWWForm(); form.AddField("***", arg01); form.AddField("***", arg02); StartCoroutine(wwwconnect.WWWPost(form,GetWWW)); while (!wwwconnect.mDone) { yield return new WaitForFixedUpdate(); } action(data); } }其中arg01,arg02为post传值所需字段的内容;
然后我们再写一个对www访问结果的进行处理的方法:
public void DoWWW(string data) { if (data != "error") { //对内容的正常处理 } else { //网络异常处理 } }
最后,就在我们需要调用的地方调用它就可以了
StartCoroutine(Usewww("***", "***",DoWWW));
在本文的最后,在给大家分享一个访问www类的简单方法:
public IEnumerator HttpByGet(string url, float timeout) { WWW www = new WWW(url); float endtime = Time.realtimeSinceStartup + timeout; while (Time.realtimeSinceStartup < endtime) { if (www.isDone) { if (www.error == null) { //网络没有异常,对数据进行处理www.text; DowwwForGet(www.text); } else { //网络异常反馈null Debug.Log(www.error); DowwwForGet(null); } //交互完毕退出循环 www.Dispose(); yield break; } yield return null; } //在自定义的结束时间内反馈异常 Debug.Log(www.error); DowwwForGet(null); www.Dispose();//退出www }附上对网络访问结果的处理方法:
private void DowwwForGet(string data) { if(data != null) { } else { } }
0 0
- Unity 管理www类访问的写法
- unity下的www类
- unity中www访问网页
- Unity的WWW类的用法整理
- Unity的WWW类的用法整理
- Unity WWW的用法
- Unity中WWW的应用
- 访问路径的写法
- 【转】提高Unity中管理多个相机的效率www.maiziedu.com
- Unity Shader的基本写法
- Unity委托的不同写法
- unity WWW
- 【Unity3D】管理类写法
- unity的内存管理
- unity 的内存管理
- Unity窗口的管理
- unity声音的管理
- Unity--WWW类与协程
- cocos2dx读取tiledmap地图常见问题
- python 合并dict
- 《谁的青春不迷茫》阅读笔记
- 用SQL将查询出来的多列的值拼接成一个字符串
- Vector3 学习与应用
- Unity 管理www类访问的写法
- BZOJ 1093 [ZJOI 2007] 最大半连通子图 (tarjan+树形DP)
- HDU 4436 str2int 后缀数组(前缀和预处理)
- iphone 适配LaunchImage
- C代码优化方案
- 用StreamReader读取中文出现乱码的解决方案
- (转)http请求和http响应详细解析
- uva714Copying Books
- win32 socket 文档地址