学习笔记适合新手,如有错误请指正。?号处也请各位指点下,谢谢。
上传
从服务器下载资源时,我们通常需要告诉服务器设备信息、用户信息等以便下载对应资源
参数或者文件可以通过UnityEngine.WWWForm类作为WWW的参数上传
设备类型可以通过APPlication.platform得到,例如:RuntimePlatform.IphonePlayer或者RuntimePlatform.Android
设备内存大小尅通过SystemInfo.systemMemorySize得到,例如:服务器通过内存大小来决定返回给客户端普通资源还是高清资源
实例演示如何使用UnityEngine.WWWForm,模拟向服务器上传数据,服务器根据数据返回对应资料的过程,还可以通过UnityEngine.WWWForm上传用户信息以及高分记录等数据
1准备文档“info.text”作为被下载的内容
2新建一个场景
3新建游戏对象并命名为“WWWMAnager”,为其增加脚本如下:
using UnityEngine; using System.Collections; public class C_13_2_1: MonoBehaviour { private string address; private WWWForm form; void Awake() { //地址 address = "file://"+Application.dataPath+"/Chapter13/info.txt"; //创建WWWForm并添加版本号等信息 form = new WWWForm (); form.AddField ("version", 1);//游戏版本号 form.AddField ("username", "John");//用户名 form.AddField ("Device", Application.platform.ToString());//设备类型 form.AddField ("Memory", SystemInfo.systemMemorySize);//设备内存大小 } void OnGUI() { if (GUILayout.Button ("Load")) { //使用协程下载 StartCoroutine(Load(address)); } } IEnumerator Load(string url) { Debug.Log (url); //向url地址上传form并下载资料 WWW www = new WWW (url,form); yield return www; string text = www.text; Debug.Log (text); } }
实例上传屏幕截图如下:
using UnityEngine; using System.Collections; using System.IO; public class C_13_2_2 : MonoBehaviour { public string screenShotURL; void OnGUI () { if (GUILayout.Button ("Upload")) { StartCoroutine (UploadPNG ()); } } IEnumerator UploadPNG() { //等待当前帧都渲染完成时 yield return new WaitForEndOfFrame(); string path = Application.dataPath + "/shot.png"; //截屏并储存 Application.CaptureScreenshot (path); //读取截屏图片 byte[] bytes = File.ReadAllBytes (path); //使用form上传图片 WWWForm form = new WWWForm(); form.AddBinaryData("fileUpload", bytes, "screenShot.png", "image/png"); WWW w = new WWW(screenShotURL, form); yield return w; if (!string.IsNullOrEmpty(w.error)) { print("有错误:"+w.error); } else { print("完成上传"); } } }
时间: 2024-10-20 17:10:04